Cors

Gyeongjae Ham·2023년 8월 16일
0
post-thumbnail

cors에 관한 설정 내용 정리글입니다. 추후 내용이 추가될 수 있습니다

WebConfig CORS 설정

  • SOP(Same Origin Policy): 어떤 출처에서 다른 출처의 리소스를 사용하는 것을 제한하는 보안 방식입니다. 브라우저는 기본적으로 다른 출처에서 오는 요청에 대해서 공격시도라고 생각하기 때문에 설정된 정책입니다

  • Origin Example: http:localhost:8082(프로토콜 + 호스트 + 포트)

    EX) http://localhost:8082에서 http://localhost:8080/api/health 호출 시 다른 Origin이므로 브라우저에서 에러가 발생합니다

  • CORS(Cross-Origin Resource Sharing): 다른 출처에 리소스를 공유하는 것을 말합니다

Preflight Request(사전 요청)

  • 웹브라우저는 기본적으로 cross origin에 대해서 HTTP 요청 전에 서버 측에서 해당 요청을 보낼 수 있는지 확인하는 Preflight Request(사전 요청)을 보냅니다
  • Preflight RequestHTTP OPTIONS 메소드를 사용합니다
  • Preflight Request를 사용하는 이유는 CORS 오류는 웹브라우저에서 발생하기 때문에 서버에서는 정상적으로 요청을 처리했는데 클라이언트에서는 오류가 난 것처럼 보일 수 있기 때문에 Preflight Request를 이용해서 사전에 확인하는 작업을 합니다

Preflight Request 생략

  • 모든 요청이 Preflight를 발생시키는 것은 아니고 아래 조건을 모두 만족하는 요청의 경우는 단순 요청(Simple Request) 이라고 하며 Preflight가 발생하지 않습니다
    • HTTP Method: GET, HEAD, POST
    • 수동으로 설정한 헤더가 다음인 경우 : "Accept", "Accept-Language", "Content-Language", "Content-Type"
    • 단, Content-Type 헤더의 경우 "application/x-www-form-urlencoded", "multipart/form-data", "text/plain" 값들일 경우에만 Preflight가 발생하지 않습니다
profile
Always be happy 😀

0개의 댓글