리액트로 만든 웹 -> Docker Image로 배포한 flask 서버로 데이터를 주고 받으려고 한다.
-> 참고 https://dongsu96.tistory.com/132
라이브러리 axios를 이용해 해당 url로 요청을 보냈는데 오류가 뜬다.
F12를 눌러 개발자도구의 console 탭에서 내용을 확인해보니 이런 에러 메세지가 떴다.
Access to XMLHttpRequest at 'https://q42up841da.execute-api.ap-northeast-2.amazonaws.com/movie/15' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
검색해보니 CORS 에러였다.
CORS 에러란?
CORS (Cross-Origin Resource Sharing) 정책 위반으로 인한 것입니다.
브라우저는 웹 페이지가 다른 도메인으로부터 자원을 요청할 때 보안 상의 이유로 이를 차단합니다. (ChatGPT)
해결방법
pip install flask_cors
-> 사용중인 가상환경에 위 모듈을 설치한 후에
from flask_cors import CORS
app = Flask(__name__)
CORS(app) # 모든 경로에 대해 CORS를 활성화합니다.
app.py로 가서 위 코드를 추가 한 후 git actions를 이용해 배포자동화했다.
잘 배포된 걸 확인 후 다시 요청해봤는데, 또 오류가 떠서 AWS CloudWatch로 가서 로그를 확인해봤다.
분명 flask_cors 모듈을 설치했는데 import 오류가 뜬다.
해결방법
flask_cors 모듈 설치는 로컬에서만 했기 때문에
Docker Image 배포할 때, flask_cors 모듈이 종속성에 포함되어 있지 않았기 때문에 import 에러가 떴던 것이다.
'React' 카테고리의 다른 글
[React] 웹으로 Object detection API 구현하기 (1) | 2023.12.23 |
---|---|
[React] 웹에서 flask 서버로 통신해 검색 기능 구현하기 (1) | 2023.12.23 |
[React] 성능 개선 2. useTransition, useDeferredValue (2) | 2023.12.22 |
[React] 성능 개선 1. 재렌더링 막는 memo(), useMemo (0) | 2023.12.22 |
[React] Local Storage 사용 방법 (2) | 2023.12.22 |