- CORS는 추가적인 HTTP header로 어떤 origin의 허가를 받았는지 확인한다.
🥜 과거 서버-클라이언트는 서버에서 클라이언트를 내려받은 후에 클라이언트로 서버와 통신했다. 따라서 의심의 여지가 없었다. (same origin request)
🍔 하지만 최근의 고도화된 웹(SPA)에서는 여러곳에 있는 리소스를 활용할 필요가 생겼다.
(유튜브, 깃헙, 슬랙 등 / cross origin request)- 처음 전송되는 리소스의 도메인과는 다른 도메인으로 리소스가 요청된 경우, 해당 리소스는 cross-origin HTTP 요청에 의해 요청된다.
- 보안을 위해서 cross-origin HTTP request는 스크립트안에서 실행된다.
- 서버에서는 허용되지 않은 도메인의 리소스 요청에 대해서 거부하고, 웹 브라우저가 사용자를 보호하기 위한 정책이기도 하다.
🫑 same-origin requests는 항상 허락한다.
🧅 cross-origin requests는 CORS에 의해서 통제된다.
ex) Fetch를 사용할 때, XMLHttpRequest를 사용할 때.
cross origin에서 서버 자원을 요청해 사용한다.
보안상의 이유로 cross origin (도메인)의 요청은 기본적으로 제한되어 있다.
서버가 허용한 범위 내에서 cross-origin 요청이 가능하다.
서버가 허용하는 조건들을 사전에 다 맞췄는지 서버에 확인하는 요청을 한다.
🍱 OPTIONS 메소드. (preflight request)
OPTIONS에 대한 정상 응답을 받으면, 원하는 HTTP 메소드의 요청을 보낸다.
거절 응답을 받으면, 리소스 요청을 할 수 없다. (400 bad request)