Computer Science/Troubleshooting
[Flask/AJAX/HTTP] CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
_혀니
2023. 12. 9. 00:48
728x90
반응형
CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Flask를 이용해 웹 개발을 하다가, JQuery이용해서 AJAX요청을 보내다가 생긴 에러로, 요청은 정상적으로 보내지지만 응답은 오지 않았다.
서버에 CORS관련 설정이 없어서 발생하는 것으로 보였다.
1. flask cors 추가
1) flask-cors 설치
pip install flask-cors
2) flask-cors import
app.py
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
# 만약 인증 같은 credentials를 포함한 정보가 오고간다면
# CORS(app, support_credentials=True, origins='localhost:80')
if __name__ == '__main__':
app.run('0.0.0.0', port=80, debug=True)
CORS를 import하고, CORS(app)을 app.py에 추가하면 된다.
옵션이 없으면 모든 도메인으로부터 접근을 허용한다.
support_credentials: credential 정보의 오고감을 허용
origins: 접근을 허용하는 도메인(여러 개 설정 가능)
참고로 support_credentials를 true로 사용하려면 origins를 보안상의 이유로 필수로 추가해야한다.
flask-cors 공식 문서에도 명시되어있다.
2. flask-cors추가하고 import도 완료했는데 에러가 발생한다.
나의 경우 에러 메시지가 2개가 떴고, 아래에 보면 500에러가 뜬다. 이럴 때는 CORS에러가 난 부분의 url(검정색 블러칠한 부분)을 클릭하면 내부 에러 페이지가 나온다. 내부 에러도 CORS에러가 같이 뜨니까 함수를 확인하자.
728x90
반응형