24년 11월 중순 정도, 프로그래머스에서 진행한 특강을 잠깐 참여했을 때
스피커가 설명하던 개념이 preflight request였습니다.
당시 스피커는 “여러분은 CORS가 왜 발생하는지 아세요?”라는 질문에 이어
“브라우저가 서로 다른 도메인에 리소스 요청을 어떻게 파악하는지 아세요?”라고 말했고
preflight를 언급한 2-3명의 인원을 제외하고선 약 150명 정도의 인원이 참여했던 채팅방은
도서관이 되어버렸습니다.(무려 3년 차까지 참여한 방이었는데 말이죠.)
저도 preflight에 대해 개념은 설명이 가능했지만 preflight를 사용했을 때의 장점이나
CORS를 제외한 preflight로 요청되는 경우는 몰랐기에 필요시 참고하려고 포스팅했습니다.
Preflight Request의 특징
1) 프론트엔드 측에서 사용하는 라이브러리나 프레임워크로
Preflight Request를 관리할 수 없습니다.
브라우저 레벨에서 자동으로 처리해 주거든요.
(백엔드에서는 preflight request로 전달된 option 처리를 해주셔야 합니다.)
2) preflight request를 통해 서버는 허용된 출처, 메서드, 헤더만 명시적으로 허용하고
불필요한 요청은 차단합니다. 잘못된 요청으로 인한 불필요한 통신을 줄일 수 있으니
자원을 절약할 수 있습니다.
3) 특별한 경우에 Preflight Request가 이뤄집니다.
GET, HEAD, POST 외의 다른 HTTP 메서드(= PUT, PATCH)를 사용하거나
커스텀 헤더(Authorization 등)를 사용할 때, application/json, multipart/form-data 등
특별한 Content-Type을 사용할 때가 대표적인 예시입니다.
Reference
[Inpa dev - cors & preflight request]
'Network' 카테고리의 다른 글
CORS, 그리고 Proxy Server (0) | 2024.12.03 |
---|