반응형
CORS(교차 출처 리소스 공유)오류는 보안적으로 존재하는 브라우저의 조치라도 할 수 있다.
CORS는 브라우저가 리소스 로드를 불러들일때 현재 도메인이 아닌 다른 출처(도메인, 체계 또는 포트)로 요청할때 발생하는 보호 조치이다.
즉 다른 출처(도메인, 체계 또는 포트)라는 서버에서 허용된 요청이라는 정보를 HTTP 헤더 기반으로 제공하는 메커니즘이다.
A 서버가 B서버에 요청했을때 B서버가 실제 요청을 허용하는지 확인하기 위해 브라우저가 교차 출처 리소스를 호스팅하는 서버에 Preflighted(프리플라이트) 요청을 하는 메커니즘에 의존한다.
해당 Preflighted에서 브라우저는 실제 요청에 사용될 HTTP 메서드와 헤더를 나타내는 헤더를 보내야 한다.
이때 사용하는 헤더가 Access-Control-Allow-Origin이다.
Access-Control-Allow-Origin을 통해 앞서 요청한 브라우저 페이지가 허용된 요청인지를 확인하게 되며
본 헤더에 정보가 없는경우 허용되지 않은 요청으로 판단하여 요청된 내용을 브라우저가 거절하게 된다.
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
origins = [
"http://localhost.asecurity.dev",
"https://localhost.localhost.dev",
"http://localhost",
"http://localhost:8080",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
만약 모든 도메인 요청을 허용하고자 한다면 아래와 같이 별표를 추가하면 된다.
Access-Control-Allow-Origin: *
'Python' 카테고리의 다른 글
Python 3.10 신기능 패턴 매칭 switch match 추가등 기능 개선 (0) | 2022.07.31 |
---|---|
Python 인증서 오류 해결 - SSLError SSLCertVerificationError CERTIFICATE_VERIFY_FAILED (0) | 2022.07.29 |
Python - __init__ arguments invalid 초기 파라미터 체크 (0) | 2022.07.22 |
Python - 리스트에서 같은 아이템 찾기 List equal item check any/all (0) | 2022.07.20 |
Python - 지능형 리스트(List Comprehension) 이해 (0) | 2022.07.15 |
댓글0