Alternates = "Alternates" ":" variant-list
variant-list = 1#( variant-description
| fallback-variant
| list-directive )
fallback-variant = "{" <"> URI <"> "}"
list-directive = ( "proxy-rvsa" "=" <"> 0#rvsa-version <"> )
RFC 2295 Transparent Content Negotiation March 1998
| extension-list-directive
extension-list-directive =
token [ "=" ( token | quoted-string ) ]
An example is
Alternates: {"paper.1" 0.9 {type text/html} {language en}},
{"paper.2" 0.7 {type text/html} {language fr}},
{"paper.3" 1.0 {type application/postscript}
{language en}},
proxy-rvsa="1.0, 2.5"
Any relative URI specified in a variant-description or fallback-
variant field is relative to the request-URI. Only one fallback-
variant field may be present. If the variant selection algorithm of
the user agent finds that all described variants are unacceptable,
then it SHOULD choose the fallback variant, if present, as the best
variant. If the user agent computes the overall quality values of
the described variants, and finds that several variants share the
highest value, then the first variant with this value in the list
SHOULD be chosen as the best variant.
The proxy-rvsa directive restricts the use of remote variant
selection algorithms by proxies. If present, a proxy MUST ONLY use
algorithms which have one of the version numbers listed, or have the
same major version number and a higher minor version number as one of
the versions listed. Any restrictions set by proxy-rvsa come on top
of the restrictions set by the user agent in the Negotiate request
header. The directive proxy-rvsa="" will disable variant selection
by proxies entirely. Clients SHOULD ignore all extension-list-
directives they do not understand.
A variant list may contain multiple differing descriptions of the
same variant. This can be convenient if the variant uses conditional
rendering constructs, or if the variant resource returns multiple
representations using a multipart media type.
8.4 Negotiate
The Negotiate request header can contain directives for any content
negotiation process initiated by the request.
Negotiate = "Negotiate" ":" 1#negotiate-directive
negotiate-directive = "trans"
| "vlist"
| "guess-small"
RFC 2295 Transparent Content Negotiation March 1998
| rvsa-version
| "*"
| negotiate-extension
negotiate-extension = token [ "=" token ]
Examples are
Negotiate: 1.0, 2.5
Negotiate: *
The negotiate directives have the following meaning
"trans"
The user agent supports transparent content negotiation for
the current request.
"vlist"
The user agent requests that any transparently negotiated
response for the current request includes an Alternates
header with the variant list bound to the negotiable resource.
Implies "trans".
"guess-small"
The user agent allows origin servers to run a custom algorithm
which guesses the best variant for the request, and to return
this variant in a choice response, if the resulting choice
=16= |