Takeaways
- The target resource has more than one representation, each with its own more specific identifier, and information about the alternatives is being provided so that the user (or user agent) can select a preferred representation by redirecting its request to one or more of those identifiers.
- The server desires that the user agent engage in reactive negotiation to select the most appropriate representation(s) for its needs.
- If the server has a preferred choice, the server should generate a
Location
header field containing a preferred choice's URI reference. The user agent may use theLocation
field value for automatic redirection.
- For request methods other than
HEAD
, the server should generate a payload in the300
response containing a list of representation metadata and URI reference(s) from which the user or user agent can choose the one most preferred. - The user agent may make a selection from that list automatically if it understands the provided media type.
- A specific format for automatic selection is not defined by this specification because HTTP tries to remain orthogonal to the definition of its payloads.
- In practice, the representation is provided in some easily parsed format believed to be acceptable to the user agent, as determined by shared design or content negotiation, or in some commonly accepted hypertext format.
- A
300
response is cacheable by default; i.e., unless otherwise indicated by the method definition or explicit cache control.
NoteAs there is no standardized way of choosing one of the responses, this response code is very rarely used.
The original proposal for the
300
status code defined the URI header field as providing a list of alternative representations, such that it would be usable for200
,300
, and406
responses and be transferred in responses to theHEAD
method.However, lack of deployment and disagreement over syntax led to both URI and Alternates (a subsequent proposal) being dropped from this specification.
It is possible to communicate the list using a set of
Link
header fields, each with a relationship of "alternate", though deployment is a chicken-and-egg problem.
Information
The HTTP 300 Multiple Choices
redirect status response code indicates that the request has more than one possible responses. The user-agent or the user should choose one of them. As there is no standardized way of choosing one of the responses, this response code is very rarely used.
If the server has a preferred choice, it should generate a Location
header.