tor 2009-01-29 klockan 23:27 +0100 skrev Constantin Rack:

> (b) Concerning the ETag and If-* headers, I am open to your comments.  
> How should we deal with them? Simply adding a "GZ" suffix to the ETag,  
> if available?

Either delete ETag + Content-Location on any transformed entity, or make
a uniquely identifiable transform of both headers which you are
reasonably sure won't collide with whatever the origin server is doing.

Sending out the same ETag and/or Content-Location on both original and
transformed entities is highly illegal in HTTP rule book as you say they
are fully equal in all aspects including content-encoding (and in case
of strong ETag even at binary octet level).

I would recommend to start out by deleting Etag + Content-Location, and
then look into how to safely add an ETag to transformed entities. Adding
back a Content-Location is probably outside any reasonable scope as you
then not only need to mess with the variant name space beneath the
requested URL (ETag and/or Content-Location) but also the servers URL
name space in general as the URL given by Content-Location should also
be requestable for retrieving that variant without any negotiation.

Note: HTTP isn't really designed for content transforming proxies, and
many things gets a little shaky in such environment. gzip/deflate by
proxies is really intended to be done as a content-encoding which isn't
plagued by any of this (as it's transport hop-by-hop, not entity
end-to-end), unfortunately support for that hasn't really been picked up
anywhere significant..

Second note: The message body looks fully identical if you compare a
"Transfer-Encoding: gzip, chunked" message to a "Content-Encoding: gzip"
"Transfer-Encoding: chunked" message in HTTP/1.1. The difference is in
headers..

Third node: Transfer-Encoding is only valid within HTTP/1.1 and can not
be used in HTTP/1.0.

Regards
Henrik


Reply via email to