HTTPQUERY
Español

300 Multiple Choices

Uso

Cuando se recibe el código de estado 300 Multiple Choices, el contenido del cuerpo del mensaje varía según el método de la solicitud. Una solicitud HEAD no incluye cuerpo de mensaje. Para los demás métodos, el cuerpo contiene una lista de la que el cliente selecciona la respuesta más adecuada.

En las respuestas a métodos distintos de HEAD, el cuerpo contiene la lista de opciones disponibles. La cabecera Link con rel=“alternate” también se usa para identificar cada opción. Si existe una respuesta predeterminada o el servidor tiene una opción preferida, la cabecera Location identifica esa preferencia.

Ejemplo

El cliente solicita un recurso y el servidor ofrece varias opciones. Las cabeceras incluyen las rutas a cada recurso. Dado que esto sigue a una solicitud GET, el cuerpo proporciona una lista de opciones en la que se puede hacer clic.

Solicitud

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

Respuesta

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>

Comportamiento del navegador

La mayoría de los navegadores no presentan una interfaz de selección al recibir una respuesta 300. Cuando hay una cabecera Location, los navegadores suelen seguir automáticamente la opción preferida, igual que con una redirección 302. Sin cabecera Location, el navegador representa el cuerpo de la respuesta, que contiene la lista de opciones disponibles. En la práctica, rara vez se encuentra un 300, ya que la negociación de contenido (Content-Negotiation) gestiona la selección de formato de forma transparente.

Referencias de código

.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