교차 출처 리소스 공유 사전 요청은 본격적인 교차 출처 HTTP 요청 전에 서버 측에서 그 요청의 메서드와 헤더에 대해 인식하고 있는지를 체크하는 것이다.
HTTPHeader("Access-Control-Request-Method"),
HTTPHeader("Access-Control-Request-Headers"),
HTTPHeader("Origin")
위와 같이 총 가지의 HTTP request headers를 사용하는 HTTPMethod("OPTIONS")요청이다.
그러므로 프론트엔드 개발자가 요청을 직접 작성할 필요는없음.
단순요청(simple request)경우에는 사전요청이 생략됨. 단순화된만큼 보안이슈가 존재함.
클라이언트는 DELETE 요청을 하기 전에 사전 요청을 통해 서버가 HTTPMethod("DELETE")을 허용하는지 물어보기
OPTIONS /resource/foo
Access-Control-Request-Method: DELETE
Access-Control-Request-Headers: origin, x-requested-with
Origin: https://foo.bar.org
응답할경우,
HTTP/1.1 204 No Content
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400
응답 헤더에 HTTPHeader("Access-Control-Allow-Methods")라고 나타나게 된다. 일한 URL을 사용하는 요청에 대해서는 Access-Control-Max-Age 헤더를 이용하여 정해진 기간 내에는 사전 요청에 대한 응답이 선택적으로 이루어질 수 있다.