- From: Phil Endecott <spam_from_www_talk@chezphil.org>
- Date: Fri, 12 Nov 2004 12:55:08 +0000
- To: www-talk@w3.org
Dear HTTP experts, I recently filed a Mozilla bug report about odd behaviour when the Vary: header and if-modified-since requests are combined. The answer was "our behaviour is per RFC2616 (HTTP)" and that seems to be true, yet it doesn't do what I expected. Here is the scenario: You have never visited my site before so have nothing cached and no cookies. You visit page P which returns Last-modified: long-ago Vary: Cookie along with its content, which you store in your browser cache. You navigate to some other page on the same site which sends you a cookie. You visit page P again. Since your cached copy of P includes a vary: Cookie header, and you now have a cookie that you didn't have before, you can't use your cached copy. What Mozilla does, and this does seem to agree with RFC2616 section 13.6, is that it sends a conditional if-modified-since request for the page. My server replies with a 304 status since the version of the page for visitors with the cookie really is the same now as it was long ago. So the user sees the wrong thing. The bit of RFC2616 in question is this paragraph from section 13.6: If the selecting request header fields for the cached entry do not match the selecting request header fields of the new request, then the cache MUST NOT use a cached entry to satisfy the request unless it first relays the new request to the origin server in a conditional request and the server responds with 304 (Not Modified), including an entity tag or Content-Location that indicates the entity to be used. I would argue that it should not send a conditional request. The Vary: cookie header and the fact that the cookie has changed indicates that a different entity is being requested from the one that is cached. The same thing will occur with multilingual pages and accept-language. If I fetch a page with one accept-language setting, then fetch it again with this header changed, it will send an if-modified-since request, get a 304 response, and display the page in the wrong language. (I am not using Etags here; I believe that most of the issues go away if you do.) Can anyone shed any light on this? Regards, Phil Endecott. p.s. the Mozilla bug is at https://bugzilla.mozilla.org/show_bug.cgi?id=269303
Received on Friday, 12 November 2004 14:04:41 UTC