웹 서버는 클라이언트에게 제공할 여러가지 컨텐츠를 준비하고 있고, 클라이언트가 요청하면 즉시 해당되는 컨텐츠를 제공하게 된다. 이러한 컨텐츠 기반에서 직접적인 액션을 취하는 Method가 GET, POST, PUT, PATCH, DELETE 이다.
OPTIONS와 HEAD, TRACE는 웹 서버가 컨텐츠를 서비스하기 위한 환경적인 요소를 확인하기 위한 Method라고 보면 된다. 웹 서버에서 어떤 문제가 있을 시 문제를 진단하기 위해 사용된다.
클라이언트가 OPTIONS라는 요청 Method와 URI를 웹 서버로 전달하면, 웹 서버는 서버가 지원하는 HTTP 요청 방식(GET, POST, PUT 등)을 응답 헤더에 포함하여 클라이언트에게 응답한다.
이 요청은 실제 데이터를 요청하지 않고, 서버가 어떤 메서드를 지원하고 어떤 권한을 가지고 있는지를 확인하는 데 사용된다.
보안 정책에서 허용된 메서드 및 권한을 확인할 때 유용하며, Cross-Origin Resource Sharing(CORS)와 관련하여 웹 애플리케이션 간의 통신을 지원하기 위해 주로 사용된다.
위 사진과 같이 DATA가 클라이언트에게 전달되지 않고 상태코드(Status)만 전달되는 것을 볼 수 있다.
HEAD는 흔히 클라이언트가 요청한 URI의 컨텐츠가 웹 서버에 존재하는지 여부를 확인할 수 있다.
클라이언트는 응답 헤더만 전달받게 되는데 상태코드(Status)가 200 OK 면 컨텐츠가 웹 서버에 존재하는 것이고, 404는 웹 서버에 존재 하지 않는 것을 의미한다.
클라이언트가 TRACE로 웹 서버에 요청을 하면, 중간 서버가 이를 먼저 받고 요청 메시지를 그대로 웹 서버로 전달한다. 이때, 클라이언트의 요청 메시지에 Via 헤더 정도를 추가하여 전달하는데 Via에는 중간 서버의 정보를 포함하게 된다.
웹 서버는 Via가 포함된 클라이언트의 요청 메시지를 받게 되면, 요청 메시지 전체를 응답 데이터에 포함하여 클라이언트에게 전달한다.
클라이언트가 웹 서버로부터 전달된 데이터를 받으면, 데이터에 포함된 Via 정보를 통해 경로상에 중간 서버가 존재함을 확인할 수 있게된다.
참고자료
https://withbundo.blogspot.com/2017/07/http-5-http-optionsheadtrace.html?m=0