- From: Brian Smith <brian@briansmith.org>
- Date: Mon, 28 Jul 2008 11:35:51 -0500
- To: "'Mark Nottingham'" <mnot@mnot.net>
- Cc: "'Henrik Nordstrom'" <henrik@henriknordstrom.net>, "'HTTP Working Group'" <ietf-http-wg@w3.org>
Mark Nottingham wrote: > I don't agree that that's the only reasonable way to handle > the request; another would be to send a 412 -- i.e., send the > etag for the representation you're trying to upload. I disagree. If the server returns a 412, I am going to issue the same request that got me the GIF representation in the first place: GET /some-image HTTP/1.1 And the server is required to respond with the GIF unless it had returned "Vary: *": HTTP/1.1 200 OK ETag: "gif-1" Content-Type: image/gif ... No progress will have been made. It is unreasonable to expect the Accept-* headers (if any) of some previous GET request to somehow be aligned with the Content-* headers of a subsequent PUT request. It isn't obvious to me that it is even possible to do so in every case. > If we want to support the case that you're talking about, it > seems to me that we'd either need to: > > a) Allow a cache to return a response which doesn't match > selecting headers. For example, if a cached response has: > > Vary: Accept-Encoding ; request had 'gzip' > ETag: "123" > > and a request comes in with > > Accept-Encoding: deflate > If-None-Match: "123" > the cache would be allowed to return it (doesn't make much sense), or The cache has to forward the request on because the Accept-Encoding header doesn't match and Accept-Encoding was listed in the Vary header. If the origin server returns a 304 with an ETag: "123" then the cache can indeed return a 304 with ETag: "123" just as the origin server would. If the client request was not conditional, then it indeed could return the representation with ETag: "123" even if the encoding doesn't match (the origin server chose to ignore the Accept-Encoding header, so the cache can too). In the future, the cache will be able to return the representation with ETag: "123" whenever the Accept-Encoding header is "gzip" or "deflate", since that is what the origin server does. Cheers, Brian
Received on Monday, 28 July 2008 16:36:27 UTC