- From: Roy T. Fielding <fielding@gbiv.com>
- Date: Wed, 4 May 2011 18:37:40 -0700
- To: Mark Nottingham <mnot@mnot.net>
- Cc: Poul-Henning Kamp <phk@phk.freebsd.dk>, HTTP Working Group <ietf-http-wg@w3.org>
On May 4, 2011, at 6:21 PM, Mark Nottingham wrote: > AFAICT the only reason that you'd way to say that the Cache-Control header's presence means that you can ignore Pragma is if you want to emit requests like this: > > GET /foo HTTP/1.1 > Host: example.com > Cache-Control: max-age=45 > Pragma: no-cache > > and have them treated differently by caches that understand CC vs. those that don't. Yes, that's exactly what we need to do if there are suspected HTTP/1.0 intermediaries in the path. max-age must override Pragma. > As I've said a few times now, according to the spec, that's currently very clearly equivalent to: > > GET /foo HTTP/1.1 > Host: example.com > Cache-Control: max-age=45, no-cache > > Which I *hope* we can agree should be interpreted conservatively. No, that's not what the client wants. The client wants an HTTP/1.1 compliant cache to obey max-age=45, not no-cache, but fears the presence of non-compliant caches that only understand Pragma. Hence, both headers are sent. If the client wanted no-cache semantics, it would have sent no-cache in *both* fields. Pragma has the same relation to CC as Expires. If that isn't defined in 2616, then it is surely an error in 2616. ....Roy
Received on Thursday, 5 May 2011 01:38:04 UTC