OPTIONS

HTTP OPTIONS

안전 (Safe)
멱등 (Idempotent)
캐시 가능아니오
요청 본문아니오
응답 본문

개요

OPTIONS는 대상 리소스가 어떤 메서드·기능을 지원하는지 묻습니다. 실무에서 가장 많이 마주치는 건 브라우저가 교차 출처 요청 전에 보내는 CORS 프리플라이트(preflight)입니다.

자세히

브라우저는 `PUT`·`DELETE`이거나 커스텀 헤더가 붙은 교차 출처 요청 전에, 먼저 OPTIONS로 서버에 '이 출처·메서드·헤더를 허용하니?'를 물어봅니다. 서버는 `Access-Control-Allow-Origin`·`-Methods`·`-Headers`로 답하고 보통 204로 응답합니다.

이 프리플라이트가 실패하면 본 요청은 아예 전송되지 않고 브라우저 콘솔에 CORS 오류가 뜹니다. 응답을 캐시해 왕복을 줄이려면 `Access-Control-Max-Age`를 함께 보냅니다.

요청 / 응답 예시

요청
OPTIONS /api/users HTTP/1.1
Host: api.example.com
Origin: https://app.example.com
Access-Control-Request-Method: POST
응답
HTTP/1.1 204 No Content
Allow: GET, POST, OPTIONS
Access-Control-Allow-Origin: https://app.example.com
Access-Control-Allow-Methods: GET, POST, OPTIONS

코드로 보기

curl -X OPTIONS https://api.example.com/api/users \
  -H 'Origin: https://app.example.com' \
  -H 'Access-Control-Request-Method: POST' -i

흔한 실수

주로 함께 쓰는 상태코드

관련 메서드

관련 헤더