CORS는
Cross-Origin Resource Sharing(교차 출처 리소스 공유)의 약자다.
CORS은 HTTP headers를 추가로 사용하여 브라우저에게 도메인(origin)에서 웹 어플리케이션을 실행시키고, 출처가 다른(a different origin) 리소스에 접근 할 수 있게해주는 한 매커니즘이다.
교차 출처 리소스 공유가 동작하는 3가지 방식
1. Simple requests(단순 요청)
simple requests는 아래 조건을 모두 충족하는 요청입니다:
preflighted request는 simple requests 와는 달리, 먼저 OPTIONS 메서드를 통해 다른 도메인의 리소스로 HTTP 요청을 보내 실제 요청이 전송하기에 안전한지 확인합니다.
Cross-site 요청은 유저 데이터에 영향을 줄 수 있기 때문에 이와같이 미리 전송(preflighted)합니다. 그리고 나서 서버에 본 요청(main request)를 보내고, 서버도 본 요청에 응답한다.
preflight request는 브라우저가 자동적으로 생성하기 때문에 따로 신경 쓸 부분은 없지만, 각 헤더가 무엇을 의미하는지는 알아둘 필요가 있다.
Access-Control-Request-Method : 실제 요청에서 사용하는 메서드를 서버가 알 수 있도록 설정하는 헤더
Access-Control-Request-Headers : 실제 요청에 포함될 헤더를 서버가 알 수 있도록 설정하는 헤더
Origin : 요청을 보낸 출처로, URL 중 scheme과 host, port만 명시