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: POSTHTTP/1.1 204 No Content
Allow: GET, POST, OPTIONS
Access-Control-Allow-Origin: https://app.example.com
Access-Control-Allow-Methods: GET, POST, OPTIONScurl -X OPTIONS https://api.example.com/api/users \
-H 'Origin: https://app.example.com' \
-H 'Access-Control-Request-Method: POST' -i