with the variant list, in a choice response.
A server may only choose on behalf of a user agent supporting
transparent content negotiation if the user agent explicitly allows
the use of a particular remote variant selection algorithm in the
Negotiate request header. User agents with sophisticated internal
variant selection algorithms may want to disallow a remote choice, or
may want to allow it only when retrieving inline images. If the
local algorithm of the user agent is superior in only some difficult
areas of negotiation, it is possible to enable the remote algorithm
for the easy areas only. More information about the use of a remote
variant selection algorithm can be found in [3].
Choice responses are covered in section 10.2. For example, the
choice response in the above picture could be:
HTTP/1.1 200 OK
Date: Tue, 11 Jun 1996 20:05:31 GMT
TCN: choice
Content-Type: text/html
Last-Modified: Mon, 10 Jun 1996 10:01:14 GMT
Content-Length: 5327
Cache-control: max-age=604800
Content-Location: paper.1
Alternates: {"paper.1" 0.9 {type text/html} {language en}},
RFC 2295 Transparent Content Negotiation March 1998
{"paper.2" 0.7 {type text/html} {language fr}},
{"paper.3" 1.0 {type application/postscript}
{language en}}
Etag: "gonkyyyy;1234"
Vary: negotiate, accept, accept-language
Expires: Thu, 01 Jan 1980 00:00:00 GMT
A paper about ....
Finally, the above two kinds of optimization can be combined; a
caching proxy which has the list will sometimes be able to choose on
behalf of the user agent. This could lead to the following
communication pattern:
Server _____ proxy _____ proxy __________ user
x.org cache cache agent
< ---------------
| GET ../paper
| small Accept
|
able to choose
on behalf
|
< ----------
| GET ../paper.1
|
---------- > [normal response]
paper.1 |
---------------- > [choice response]
paper.1 and list
Note that this cutting of corners not only saves bandwidth, it also
eliminates delays due to packet round trip times, and reduces the
load on the origin server.
4.5 Downwards compatibility with non-negotiating user agents
To handle requests from user agents which do not support transparent
content negotiation, this specification allows the origin server to
revert to a HTTP/1.0 style negotiation scheme. The specification of
heuristics for such schemes is beyond the scope of this document.
RFC 2295 Transparent Content Negotiation March 1998
4.6 Retrieving a variant by hand
It is always possible for a user agent to retrieve the variant list
which is bound to a negotiable resource. The user agent can use this
list to make available a menu of all variants and their
characteristics to the user. Such a menu allows the user to randomly
browse other variants, and makes it possible to manually correct any
sub-optimal choice made by the automatic negotiation process.
4.7 Dimensions of negotiation
=8= |