사전 요청(Preflighted Requests)

이건우·2021년 12월 12일
0

Interaction With Server

목록 보기
13/15

개요

교차 출처 리소스 공유 사전 요청은 본격적인 교차 출처 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 헤더를 이용하여 정해진 기간 내에는 사전 요청에 대한 응답이 선택적으로 이루어질 수 있다.

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글