Next.js × FastAPI 구성에서 CORS로
경위
여기 에서 소개하겠습니다만, Next.js와 FastAPI로 Next.js에서 API를 호출하면 CORS의 설정에서는 끝났으므로 기재하겠습니다.
CORS란?
Cross-Origin Resource Sharering의 약어로 일본어 번역하면 "오리진 간 자원 공유"라고합니다.
원래 오리진이 무엇이라고 하면 페이지의 스킴(프로토콜), 호스트(도메인), 포트에 의해 정의되는 것으로, 이것들이 모두 일치하는 것이 같은 오리진이라고 말할 수 있습니다.
보안상의 이유로 브라우저는 스크립트에서 시작하는 오리진 간 HTTP 요청을 제한합니다.
이것으로부터 Next.js와 FastAPI로 각각 기동하고 있는 경우는 port는 다르므로 이 제한을 받게 됩니다.
발생하는 오류
Next.js를 http://127.0.0.1:3000
로 시작하고 fastAPI의 http://localhost:8000/users/create
API를 호출하면 아래와 같은 오류가 발생했습니다.
Cross-Origin Resource Sharering의 약어로 일본어 번역하면 "오리진 간 자원 공유"라고합니다.
원래 오리진이 무엇이라고 하면 페이지의 스킴(프로토콜), 호스트(도메인), 포트에 의해 정의되는 것으로, 이것들이 모두 일치하는 것이 같은 오리진이라고 말할 수 있습니다.
보안상의 이유로 브라우저는 스크립트에서 시작하는 오리진 간 HTTP 요청을 제한합니다.
이것으로부터 Next.js와 FastAPI로 각각 기동하고 있는 경우는 port는 다르므로 이 제한을 받게 됩니다.
발생하는 오류
Next.js를 http://127.0.0.1:3000
로 시작하고 fastAPI의 http://localhost:8000/users/create
API를 호출하면 아래와 같은 오류가 발생했습니다.
오류 메시지
Access to XMLHttpRequest at 'http://localhost:8000/users/create' from origin 'http://127.0.0.1:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
대응 방법
FastAPI 측에서 오리진 간 공유를 허용하도록 설정해야 합니다.
생성한 FastAPI의 인스턴스에 대해 아래와 같이 설정하는 것으로 대응했습니다.
from starlette.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"])
끝에
보다 좋은 대응 방법이 있을지도 모릅니다만, 일단은 상기에서 대응했습니다.
모든 것을 인정해 버릴 수 있는지 등은 앞으로 생각해 가고 싶다고 생각합니다.
Reference
이 문제에 관하여(Next.js × FastAPI 구성에서 CORS로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kihara-takahiro/items/a52a99f4d0f66d4b1dfe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from starlette.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"])
보다 좋은 대응 방법이 있을지도 모릅니다만, 일단은 상기에서 대응했습니다.
모든 것을 인정해 버릴 수 있는지 등은 앞으로 생각해 가고 싶다고 생각합니다.
Reference
이 문제에 관하여(Next.js × FastAPI 구성에서 CORS로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kihara-takahiro/items/a52a99f4d0f66d4b1dfe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)