- From: Roy T. Fielding <fielding@avron.ICS.UCI.EDU>
- Date: Mon, 16 Oct 1995 17:57:20 -0700
- To: http WG <http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com>
> If the proxy is a caching proxy, the proxy - server connection will be used less
> frequently, than the client - proxy connection.
Yes, that is the intention.
> If there are multiple clients accessing the same orig server, the proxy may want
> to multiplex requests from different clients in one server connection. For this
> case the keep-alive header isn't the best place to carry the accept*
> configuration.
On the contrary, that is exactly why the keep-alive header is the best
place to indicate what can be kept as state. When the proxy switches
the request to a different client, it must replace any preexisiting state
with that of the current request, which is why the state="" parameter
is a list of header field-names.
> (Graphical browsers have two set of accept* headers, one for web
> pages, one for inlined images. This is a second objection to
> keep-alive: state=....)
Again, that is why it exists in the first place, as opposed to just
an assumption that state be inherited, or not exist at all. For example
First request: get the object and save browser default accept list
GET / HTTP/1.1
Connection: Keep-Alive
Accept: text/*, */*;q=0.1
Accept-Language: en, mi
Keep-Alive: state="Accept,Accept-Language"
HTTP/1.1 200 OK
Connection: Keep-Alive
Keep-Alive: timeout=20, state="Accept,Accept-Language"
...
Second request: get an image, override current Accept
GET /image1 HTTP/1.1
Connection: Keep-Alive
Accept: image/gif, image/jpeg, image/*;q=0.1
HTTP/1.1 200 OK
Connection: Keep-Alive
Keep-Alive: timeout=20, state="Accept,Accept-Language"
...
Third request (new client): replace state with its own
GET / HTTP/1.1
Connection: Keep-Alive
Accept: application/pdf, text/*, */*;q=0.1
Accept-Language: fr, de
Accept-Charset: UNICODE-1-1, iso-8859-1
Keep-Alive: state="Accept,Accept-Language"
HTTP/1.1 200 OK
Connection: Keep-Alive
Keep-Alive: timeout=20, state="Accept,Accept-Language,Accept-Charset"
...
The more I look at such gross stuff, the more I feel we should just
ditch the whole Accept* nonsense and implement two-phase negotiation
instead. Hmmm, in that case, we would be better-off without state="".
> The accept-signature (or accept-hash) proposed by Larry
> Masinter looks better.
Only if you assume that the accept headers will never be configurable
on a per-client basis, in which case we might as well get rid of them
altogether.
...Roy T. Fielding
Department of Information & Computer Science (fielding@ics.uci.edu)
University of California, Irvine, CA 92717-3425 fax:+1(714)824-4056
http://www.ics.uci.edu/~fielding/
Received on Monday, 16 October 1995 18:24:46 UTC