What headers do I want to send together with a 304 response?

前端 未结 2 379
既然无缘
既然无缘 2021-02-05 10:56

When I send a 304 response. How will the browser interpret other headers which I send together with the 304?

E.g.

header(\"HTTP/1.1 304 Not Modified\");
         


        
2条回答
  •  失恋的感觉
    2021-02-05 11:31

    This blog post helped me a lot in order to tame the "conditional get" beast.

    An interesting excerpt (which partially contradicts Ben's answer) states that:

    If a normal response would have included an ETag header, that header must also be included in the 304 response.

    Cache headers (Expires, Cache-Control, and/or Vary), if their values might differ from those sent in a previous response.

    This is in complete accordance with the RFC 2616 sec 10.3.5.


    Below a 200 request...

    HTTP/1.1 200 OK
    Server: nginx/0.8.52
    Date: Thu, 18 Nov 2010 16:04:38 GMT
    Content-Type: image/png
    Last-Modified: Thu, 15 Oct 2009 02:04:11 GMT
    Expires: Thu, 31 Dec 2010 02:04:11 GMT
    Cache-Control: max-age=315360000
    Accept-Ranges: bytes
    Content-Length: 6394
    Via: 1.1 proxyIR.my.corporate.proxy.name:8080 (IronPort-WSA/6.3.3-015)
    Connection: keep-alive
    Proxy-Connection: keep-alive
    X-Junk: xxxxxxxxxxxxxxxx
    

    ...And its optimal valid 304 counterpart.

    HTTP/1.1 304 Not Modified
    Server: nginx/0.8.52
    Date: Thu, 18 Nov 2010 16:10:35 GMT
    Expires: Thu, 31 Dec 2011 16:10:35 GMT
    Cache-Control: max-age=315360000
    Via: 1.1 proxyIR.my.corporate.proxy.name:8080 (IronPort-WSA/6.3.3-015)
    Connection: keep-alive
    Proxy-Connection: keep-alive
    X-Junk: xxxxxxxxxxx
    

    Notice that the Expires header is at most Current Date + One Year as per RFC-2616 14.21.

提交回复
热议问题