반응형
Nginx access_log에 OPTIONS 메서드로 요청된 부분이 기록되어 있어 궁금하였다. 확인해보니 몇몇 특정 HTTP 요청 이전에 기록되고 있었다.
1. HTTP OPTIONS 메서드?
OPTIONS 메서드는 클라이언트가 서버로부터 특정 리소스에 대해 허용된 메서드와 HTTP 헤더, 인증 요구 사항 등 통신에 필요한 정보를 요청하는 용도로 사용된다. 주로 서버와 클라이언트 간의 CORS (Cross-Origin Resource Sharing) 설정을 확인할 때 사용된다. 즉, 실제 데이터를 가져오지 않고, HTTP 통신이 가능한지 확인하기 위해 사용된다.
2. OPTIONS 메서드의 주요 헤더
- Allow: 서버가 해당 리소스에 대해 허용하는 HTTP 메서드를 응답한다.
예를 들어 Allow: GET, POST, OPTIONS처럼 표시된다. - Access-Control-Allow-Methods: CORS 요청 시, 서버가 클라이언트에게 허용하는 메서드를 응답한다.
이 헤더는 Prefilght 요청에서 주로 사용된다. - Access-Control-Allow-Headers: 클라이언트가 요청에서 사용할 수 있는 헤더 목록을 명시한다.
- Access-Control-Allow-Origin: CORS 요청을 허용하는 도메인을 지정한다.
특정 도메인만 허용하거나, 모든 도메인을 허용할 때는 *로 지정한다.
3. OPTIONS 메서드의 사용 사례
CORS (Cross-Origin Resource Sharing) Preflight 요청
OPTIONS 메서드는 CORS에서 주로 Preflight 요청으로 사용된다. 특정 조건이 충족될 때, 브라우저는 실제 요청을 보내기 전에 OPTIONS 요청을 통해 서버가 요청을 허용하는지 확인한다. 다음과 같은 경우에 Preflight 요청이 발생한다.
- Content-Type이 application/json, application/x-www-form-urlencoded 외의 값일 때
- 커스텀 헤더를 포함할 때 (eg. Authorization, X-Custom-Header... 등)
- PUT, DELETE, PATCH 메서드를 사용할 때
REST API 메서드 확인
특정 엔드포인트가 어떤 메서드를 지원하는지 알고 싶을 때 OPTIONS 요청을 사용할 수 있다. RESTful API 문서화를 위한 간단한 확인 방법으로 유용하다.
4. OPTIONS 메서드의 예외 처리
- Preflight 요청에서 OPTIONS 요청에 대한 응답이 올바르게 설정되지 않으면, CORS 정책 위반으로 인해 클라이언트에서 에러가 발생할 수 있다.
- OPTIONS 메서드를 사용하는 경우, 서버는 요청에 대해 200 또는 204 응답을 반환해야 한다.
- Preflight 요청에서 응답의 Access-Control-Allow-Origin 헤더가 누락되면, 브라우저는 요청을 차단한다.
5. 결론
OPTIONS 메서드는 클라이언트와 서버 간의 상호작용 가능 여부를 확인할 때 유용하다. 특히, CORS가 필요한 환경에서 Preflight 요청의 핵심 역할을 하며, Restful API 사용 시 지원되는 메서드를 확인할 수 있는 간편한 방법을 제공한다.
반응형
'Server' 카테고리의 다른 글
Apache Bench 웹서버 부하 테스트 (0) | 2024.01.20 |
---|---|
HTTP Header (0) | 2022.08.13 |
인터넷 통신 (0) | 2022.06.27 |
CentOS7 SELinux 정책 변경, httpd_sys_rw_content_t 설정 (0) | 2020.11.30 |