제로하우스
[Web] Preflight Request란? 본문
Preflight Request(사전 요청)란?
교자 출처 리소스 공유(CORS) Preflight Request는 본격적인 교차 출처 HTTP 요청 전에 서버 측에서 그 요청의 메서드와 헤더에 대해 인식하고 있는지를 체크하는 것이다.
Preflight Request는 HTTP Method(OPTIONS
)이며, 본 요청을 보내기 전에 먼저 본 요청에 대한 권한을 확인하는 작업을 통해, 본 요청이 유효한지 체크할 수 있다. Preflight Request는 다음 3가지의 HTTP Request Header를 사용한다.
- "Access-Control-Request-Method"
- "Access-Control-Request-Headers"
- "Origin"
Access-Control-Max-Age 헤더를 이용하면, 사전 요청 결과가 얼마 동안 캐시될 지를 나타낼 수 있다. 아래는 10분 동안 사전 요청 결과를 캐시하는 예시이다.
Access-Control-Max-Age: 600
Simple Request란?
반대로, 위와 같은 CORS Preflight가 트리거 되지 않는 일부 요청이 있는데, 이를 Simple Request(단 순 요청)라고 한다.단순 요청에 충족되는 요청 조건은 아래와 같다.
- 다음 중 하나의 Method
- GET
- HEAD
- POST
- User Agent가 자동으로 설정한 Header외에, 수동으로 설정할 수 있는 헤더는 오직 Fetch 명세에서 "CORS-safelisted request-header"로 정의한 Header 뿐.
- Accept
- Accept-Language
- Content-Language
- Content-Type (아래 추가 요구 사항에 유의)
- DPR
- Downlink
- Save-Data
- Viewport-Width
- Width
- Content-Type 헤더는 다음의 값들만 허용
- application/x-www-form-urlencoded
- multipart/form-data
- text/plain
'Web' 카테고리의 다른 글
[Web] req.body와 req.params와 req.query의 차이 (cf. JavaScript, Axios, Express.js) (0) | 2022.08.23 |
---|---|
ngrok (0) | 2022.06.08 |
[TIL][Web] 14 HTTP 상태 코드 정리 (0) | 2022.05.20 |
[TIL][Web] 13 HTTP 요청 메서드 (0) | 2022.05.20 |
[TIL][Web] 12 HTTP 메시지 (0) | 2022.05.20 |
Comments