HTTPQUERY
한국어

300 Multiple Choices

사용법

300 Multiple Choices 상태 코드를 받으면 메시지 본문의 내용은 요청 메서드에 따라 달라집니다. HEAD 요청에는 메시지 본문이 포함되지 않습니다. 다른 메서드의 경우 본문에는 클라이언트가 가장 적절한 응답을 고를 수 있는 목록이 담깁니다.

HEAD가 아닌 응답에서는 본문에 사용 가능한 선택지 목록이 들어 있습니다. 각 선택지를 식별하는 데에는 rel=“alternate”를 지정한 Link 헤더도 사용됩니다. 기본 응답이 있거나 서버에 선호하는 선택지가 있으면, Location 헤더가 그 선호 대상을 식별합니다.

예시

클라이언트가 리소스를 요청하고 서버는 여러 선택지를 제시합니다. 헤더에는 각 리소스로의 경로가 포함됩니다. 이 응답은 GET 요청에 대한 것이므로, 본문은 클릭 가능한 선택지 목록을 제공합니다.

요청

GET /tech-news HTTP/1.1
Host: example.com

응답

HTTP/1.1 300 Multiple Choices
Link: </leading/news.html>; rel="alternate"
Link: </bleeding/news.html>; rel="alternate"
Location: </leading/news.html>
Content-Type: text/html
Content-Length: 164

<h2>Choose from one of the following</h2>
<ul>
  <li><a href=/leading/news.html>Leading edge</a>
  <li><a href=/bleeding/news.html>Bleeding edge</a>
</ul>

브라우저 동작

대부분의 브라우저는 300 응답을 받아도 선택 인터페이스를 보여주지 않습니다. Location 헤더가 있으면 브라우저는 보통 302 리다이렉트와 비슷하게 선호 선택지를 자동으로 따라갑니다. Location 헤더가 없으면 브라우저는 사용 가능한 선택지 목록이 담긴 응답 본문을 렌더링합니다. 실무에서 300을 마주치는 일은 드문데, 콘텐츠 협상이 포맷 선택을 투명하게 처리하기 때문입니다.

코드 참고

.NET

HttpStatusCode.MultipleChoices

Rust

http::StatusCode::MULTIPLE_CHOICES

Rails

:multiple_choices

Go

http.StatusMultipleChoices

Symfony

Response::HTTP_MULTIPLE_CHOICES

Python3.5+

http.HTTPStatus.MULTIPLE_CHOICES

Java

java.net.HttpURLConnection.HTTP_MULT_CHOICE

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_MULTIPLE_CHOICES

Angular

@angular/common/http/HttpStatusCode.MultipleChoices