CORS

EricHan·2022년 8월 24일
0

CORS는
Cross-Origin Resource Sharing(교차 출처 리소스 공유)의 약자다.

CORS은 HTTP headers를 추가로 사용하여 브라우저에게 도메인(origin)에서 웹 어플리케이션을 실행시키고, 출처가 다른(a different origin) 리소스에 접근 할 수 있게해주는 한 매커니즘이다.

교차 출처 리소스 공유가 동작하는 3가지 방식
1. Simple requests(단순 요청)

simple requests는 아래 조건을 모두 충족하는 요청입니다:

  • GET, HEAD, POST 중 하나의 메소드를 사용해야한다.
  • user agent가 자동으로 설정 한 헤더만 가능하다.
  • Content-Type 헤더는 다음의 값들만 허용된다.
    application/x-www-form-urlencoded
    multipart/form-data
    text/plain
  • simple request는 한번의 요청과 한번의 응답만 있다.
  1. Preflight(프리플라이트)/ 예비 요청 방법

preflighted request는 simple requests 와는 달리, 먼저 OPTIONS 메서드를 통해 다른 도메인의 리소스로 HTTP 요청을 보내 실제 요청이 전송하기에 안전한지 확인합니다.

Cross-site 요청은 유저 데이터에 영향을 줄 수 있기 때문에 이와같이 미리 전송(preflighted)합니다. 그리고 나서 서버에 본 요청(main request)를 보내고, 서버도 본 요청에 응답한다.

  1. Credentialed requests(인증정보를 포함한 요청)
    : credentialed requests는 HTTP cookies 와 HTTP Authentication 정보를 인식합니다. 기본적으로 cross-site XMLHttpRequest 나 Fetch 호출에서 브라우저는 자격 증명을 보내지 않습니다. XMLHttpRequest 객체나 Request 생성자가 호출될 때 특정 플래그를 설정해야 합니다.

preflight request는 브라우저가 자동적으로 생성하기 때문에 따로 신경 쓸 부분은 없지만, 각 헤더가 무엇을 의미하는지는 알아둘 필요가 있다.

  • Access-Control-Request-Method : 실제 요청에서 사용하는 메서드를 서버가 알 수 있도록 설정하는 헤더

  • Access-Control-Request-Headers : 실제 요청에 포함될 헤더를 서버가 알 수 있도록 설정하는 헤더

  • Origin : 요청을 보낸 출처로, URL 중 scheme과 host, port만 명시

profile
desarollitor

0개의 댓글