몽상실현개발주의

HTTP OPTIONS 메소드와 Preflight 요청 이해하기 본문

Dev

HTTP OPTIONS 메소드와 Preflight 요청 이해하기

migrationArc 2024. 3. 3. 17:17
웹 개발을 하다 보면 다양한 HTTP 메소드들을 사용하게 됩니다. 그중 `OPTIONS` 메소드는 특별한 역할을 수행하는데, 이 글에서는 `OPTIONS` 메소드와 관련된 CORS에서의 preflight 요청에 대해 자세히 알아보겠습니다.

 

# HTTP OPTIONS 메소드란?

HTTP `OPTIONS` 메소드는 클라이언트가 웹 서버에게 특정 리소스에 대해 어떤 HTTP 메소드가 허용되는지 물어보는 용도로 사용됩니다. 이는 서버가 지원하는 메소드를 확인하기 위한 요청으로, 예를 들어 `OPTIONS /index.html HTTP/1.1`과 같은 형태로 사용됩니다. 서버는 이에 대해 `GET`, `POST` 등 자신이 해당 리소스에 대해 지원하는 메소드 목록을 응답으로 보냅니다.

 

 

# CORS와 Preflight 요청

CORS(Cross-Origin Resource Sharing)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택된 리소스에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 이는 웹 애플리케이션의 보안을 강화하기 위한 메커니즘입니다.

 

CORS 정책의 일환으로, 브라우저는 "preflight" 요청을 보낼 수 있습니다. 이는 실제 요청을 서버에 보내기 전에, 해당 요청이 안전한지 확인하기 위해 먼저 보내는 `OPTIONS` 요청입니다. 특히, `PUT`, `DELETE`, `CONNECT` 등과 같이 `GET`과 `POST` 이외의 메소드를 사용하는 요청이나, 사용자 정의 헤더를 포함하는 요청에 대해 이러한 preflight 요청이 자주 사용됩니다.

 

 

# Preflight 요청의 작동 방식

1. Preflight 요청 발송: 브라우저는 실제 요청을 보내기 전에 `OPTIONS` 메소드를 사용하여 preflight 요청을 서버에 보냅니다. 이 요청은 실제 요청에서 사용될 HTTP 메소드와 헤더를 `Access-Control-Request-Method`와 `Access-Control-Request-Headers` 헤더에 담아 서버에 전달합니다.

 

2. 서버의 응답: 서버는 이 preflight 요청에 대해 `Access-Control-Allow-Methods`와 `Access-Control-Allow-Headers` 헤더를 포함한 응답을 보냅니다. 이는 서버가 클라이언트의 실제 요청을 수락할 준비가 되었음을 나타냅니다.

 

3. 실제 요청 처리: preflight 요청에 대한 서버의 응답이 성공적이면, 브라우저는 실제 요청을 서버에 보냅니다.

 

# 결론

`OPTIONS` 메소드와 preflight 요청은 웹 개발에서 중요한 역할을 합니다. 특히, 다양한 출처의 리소스를 안전하게 사용하기 위한 CORS 정책을 준수하는 데 필수적입니다. 이러한 메커니즘을 이해하는 것은 웹 애플리케이션의 보안과 상호 운용성을 보장하는 데 도움이 됩니다.

Comments