Cache-Control: 'private'使得'no-cache="set-cookie"'变得不必要吗?

11

我对 Cache-Control 头的 'private' 指令的定义的理解是,它将防止任何响应部分被中间代理缓存。因此,基于这一点,如果我使用 'private' 指令,则似乎没有必要再使用 'no-cache="set-cookie"' 指令来告诉中间代理抑制 Set-Cookie 头的缓存。

然而,在第4.2.3节 在本文档中 中,它说:

根据情况,源服务器应发送以下其他 HTTP/1.1 响应头:

  • 为了抑制 Set-Cookie 头的缓存:Cache-control: no-cache="set-cookie"。

    和以下之一:

  • 为了抑制共享缓存中的私有文档的缓存:Cache-control: private。

    [...]

我看到很多在线示例都同时使用了这两个指令。

我真的需要这两个东西来防止中间代理缓存Set-Cookie头吗?我已经进行了一些测试,似乎Internet Explorer会对“no-cache =”set-cookie“”指令做出响应,每次都会发出完整的请求,因此如果不必要,我宁愿不包括它。
1个回答

5

Cache-Control: Private会阻止中间缓存存储内容,因此在这种情况下不适用set-cookie指令。


3
但是Google Analytics的1x1像素图仍在使用此标题值:private、no-cache、no-cache=Set-Cookie、proxy-revalidate。 - Valentin V
@Valentin 这可能是因为某些浏览器和代理更容易理解那些被拼写出来的东西。 - Alexis Wilke
我的服务器是Laravel,当我发送一个用于匿名API的令牌时,它返回了以下错误:HTTP/1.0 401未经授权Cache-Control: no-cache, private Content-Type: application/json Date: Sun, 26 Jul 2020 05:07:39 GMT {"success":false,"error":[{"code":401,"message":"unauthorized"}]}。我该如何配置Laravel只向客户端发送JSON? - saber tabatabaee yazdi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接