보통 웹에서 사용하는 HTTP request는 다른 도메인 데이터를 요청할 수 있다.
가령 Flask로 local에서 구현하다가 구글같은 페이지의 주소를 복사해와서,
src = '' 안에 넣으면 로컬페이지에서 구글페이지 이미지가 뜨는것과 같은 구조이다.
하지만 스크립트 태그 ( <script> </script> )로 둘러싸인 스크립트 코드에서 실행되는
HTTP request는 동일한 서버에서만 요청할 수 있다.
정확히 프로토콜, 호스트명, 포트가 동일해야하고 이를 Same Origin Policy 라고 한다.
즉 http://localhost:5000/ 서버에서 http://localhost:8080/test 이 서버에
요청할 수가 없다는 것이다. (포트번호가 다르기 때문에 에러가 난다)
그럼 프론트엔드 서버에서 백엔드 서버를 가져와야하는데 이럴 경우는 어떻게 해야하는가??
flask 같은 경우, flask 에다가 설정을 해주어야 한다.
flask_cors 라이브러릴 사용해야 하고, (pip install flask_cors)
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
다음과 같은 코드설정을 해주면 된다. 이를 통해서 다른 서버에 요청을 하더라도 더이상
에러를 발생시키지 않는다.
위는 CORS를 설정하기 전이고, 아래는 CORS를 설정한 후, Access-control-Allow-Origin이 적용된 것을
확인할 수 있다.
끝으로 자주 쓰이는 HTTP 응답코드를 한번 더 확인하고 이정도는 머리속에 암기해두는 것이 좋아보인다.
'Web Development > Flask' 카테고리의 다른 글
Rest API 요청시 파라미터, 값 넣기 (0) | 2022.07.27 |
---|---|
Rest API 이해를 위한 HTTP protocol (0) | 2022.07.26 |
Python Web Framework Flask ( Why Flask ? ) (0) | 2022.05.29 |