교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)
한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다.
- MDN
CORS는 웹 브라우저에서 해당 정보를 읽는 것이 허용된 출처를 서버에서 설명할 수 있는 새로운 HTTP헤더를 추가함으로써 동작함.
Access-Control-Allow-Origin : 해당하는 도메인을 허용
Access-Control-Expose-Headers : 브라우저가 접근할 수 있는 헤더를 서버의 화이트리스트에 추가
Access-Control-Max-Age : preflight request 요청 결과를 캐시할 수 있는 시간
Access-Control-Allow-Credentials : 헤더는 credentials
플래그가 true일 때 요청에 대한 응답을 표시할 수 있는지
Access-Control-Allow-Methods : 헤더는 리소스에 접근할 때 허용되는 메서드를 지정
Access-Control-Allow-Headers : Access-Control-Request-Headers를 포함한 preflight 요청이 이루어 진 뒤 반환되는 실제 요청 시 사용할 수 있는 HTTP 헤더
프리플라이트 요청(preflighted request)
Options
메소드를 통해 다른 도메인의 리소스로 HTTP 요청을 보내 실제 요청이 전송하기에 안전한지(CORS를 만족하는지) 확인합니다.