반응형
안녕하세요.
오늘은 flask cors 설치 및 적용에 대해 알아보려고 합니다.
CORS 란?
CORS는 "Cross Origin Resource Sharing"의 약자인데 해석하면 서로 다른 도메인간에 자원을 공유하는 것을 의미하며 기본적으로 브라우저에서 허용하지 않은 도메인에 대한 자원 공유가 보안상의 이유로 스크립트에서 시작된 교차 출처 HTTP 요청을 제한합니다.
API를 사용하는 웹 애플리케이션은 다른 출처의 응답에 올바른 CORS 헤더가 포함되지 않는 한 애플리케이션이 로드된 동일한 출처에서만 리소스를 요청할 수 있습니다.
1. flask-cors 를 설치
pip install flask-cors
2. flask-cors를 import하여 적용
CORS를 아래처럼 적용을 하면 어떤 호출이던 허용 및 응답을 해주게 되는걸로 설정이 됩니다.
CORS(app, resources={
r"/api/*": {"origin": "*"},
})
이런 식으로 작성을 해두시면 어떠한 도메인들만 허용하겠다 라는 조건이 걸리게 됩니다!
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app, resources={
r"/api/*": {"origin": "*"},
})
@app.route('/')
def hello():
return 'Hello, JeeU World!'
@app.route('/api/users')
def apiUsers():
return {"members": [{ "id" : 1, "name" : "jeeu" },
{ "id" : 2, "name" : "jeeu2" }]}
@app.route('/users')
def users():
return {"members": [{ "id" : 3, "name" : "jeeu3" },
{ "id" : 4, "name" : "jeeu4" }]}
3. 실제 적용 사례
실제로 ~/api/* 에 해당하는 것만 CORS를 적용해줬기 때문에 /api/users 는 정상적으로 호출이 되고 있고 /users는 CORS에 의하여 호출되지 않고 있는 것을 확인할 수 있습니다!
// 프론트 소스
async function users() {
await fetch(`http://192.168.35.99:8001/users`).then(
// response 객체의 json() 이용하여 json 데이터를 객체로 변화
res => res.json()
).then(
// 데이터를 콘솔에 출력
data => console.log(data)
)
}
async function apiUsers() {
await fetch(`http://192.168.35.99:8001/api/users`).then(
// response 객체의 json() 이용하여 json 데이터를 객체로 변화
res => res.json()
).then(
// 데이터를 콘솔에 출력
data => console.log(data, "여기는 CORS API 적용")
)
}
이렇게 하면 flask-cors를 정상적으로 설치 및 적용을 하실 수 있습니다.
감사합니다.
반응형
'Programming > Python' 카테고리의 다른 글
[Python] json.dumps 유니코드 인코딩 깨지는 오류 (0) | 2024.06.28 |
---|---|
[Python] flask 저장 후 자동 갱신(재시작) - debug mode (0) | 2024.04.29 |
[Python] flask host 및 port 변경 (0) | 2024.04.28 |
[Python] Selenium 버전 에러 해결 방법 (52) | 2023.11.03 |
파이썬 플라스크 (Python flask) 설치 및 사용법 (49) | 2023.09.17 |
댓글