Http 代理缓存-cookies呢?

Http 代理缓存-cookies呢?,http,caching,proxy,header,cache-control,Http,Caching,Proxy,Header,Cache Control,我读书。它说代理服务器可以缓存cookie。我需要澄清 假设我有一个文件头:缓存控制“max age=604800,public” Q.1.使用此标题,当访问静态文件时,来自个人计算机的cookie是否会缓存在代理服务器上?(那么,下一个访问该文件的人会拿起另一个人的cookies吗? 现在,假设缓存代码类似于缓存控制“max age=7200,proxy revalidate”。Q.2.代理服务器上的cookie缓存有什么区别 现在我有一个关于实际设置cookie的文件(如Javascr

我读书。它说代理服务器可以缓存cookie。我需要澄清


假设我有一个文件头:
缓存控制“max age=604800,public”

Q.1.使用此标题,当访问静态文件时,来自个人计算机的cookie是否会缓存在代理服务器上?(那么,下一个访问该文件的人会拿起另一个人的cookies吗?


现在,假设缓存代码类似于缓存控制“max age=7200,proxy revalidate”。
Q.2.代理服务器上的cookie缓存有什么区别


现在我有一个关于实际设置cookie的文件(如Javascript或PHP)的问题。
Q.3。当访问这些类型的文件时,cookie会缓存在代理服务器上吗?或者缓存与静态文件相同


如果你想知道,我问这些问题的原因是因为我不需要代理缓存一个人的cookie,从而将其传输给另一个人。所以任何澄清都会有帮助。非常感谢你


编辑:

非常感谢您的帮助。但是我还需要一点澄清。

如果我有文件使用头
缓存控制“max age=604800,public”
,是否会将任何请求Cookie(
Cookie
)或响应Cookie(
设置Cookie
)传输到另一个用户的计算机(因为它在缓存中)?或者它只会被缓存以供个人用户浏览?如果设置为缓存控制“max age=7200,代理重新验证”,该怎么办?再次感谢。

这取决于代理和
Vary
响应标题。通常,代理不会缓存对具有
Cookie
头的请求的响应。然而,这并不能真正保证

当您使用指令
public
指定
缓存控制
头时,您要求代理在不同的客户端之间共享缓存。这可能不是您的意图,因此您应该指定
private
。见:

代理服务器上的cookie缓存有什么区别

不是真的。它所做的只是告诉代理它不应该从过时的缓存提供服务。它不影响缓存的控制方式

当访问这些类型的文件时,Cookie是否会缓存在代理服务器上?或者缓存与静态文件相同

对于http级别的软件(例如代理),静态内容和动态内容之间没有区别。Cookie仅仅是http头,随请求发送(
Cookie
header)或随响应发送(
Set Cookie
headers)

如果在浏览器中设置cookie(通过Javascript或从服务器端,通过
set cookie
头),浏览器将把cookie连同所有后续请求一起发送回同一域。它通过在请求中添加
Cookie
头来实现这一点

编辑:


我确实希望我的实际文件缓存在代理上,但不希望缓存单个用户的cookie。我该怎么做

您需要避免缓存任何以下响应:

  • 包含
    Set Cookie
    头(因为这会被代理缓存)
  • 服务器端有一个副作用(例如,应用程序接收请求很重要-例如,缓存跟踪像素没有意义)
  • 其中,请求
    Cookie
    标题的内容决定了呈现的内容(例如打印“欢迎回来,John Doe”或其他定制)
具体如何做到这一点取决于您的后端技术。您的应用程序知道
Cookie
头对于响应是否重要,或者响应是否可能包含
Set Cookie

在我使用的应用程序框架中,有一个通过expires头设置缓存的函数。如果我调用它并在同一个请求中访问cookies,我将得到一个错误。这确保了我不会意外地要求代理缓存私有内容。您需要在应用程序中实现类似的逻辑

或者,您可以配置边缘级别代理来执行相同的操作。如果不完全控制应用程序,通常会这样做

如果我有使用头缓存控制“max age=604800,public”的文件,是否会将任何请求Cookie(Cookie)或响应Cookie(Set Cookie)传输到另一个用户的计算机(因为它在缓存中)?或者它只会被缓存以供个人用户浏览

请求cookie不会被缓存,也不会被传输到任何地方。响应(
设置Cookie
)被缓存。由于您将
缓存控制指定为公共,因此它将在所有客户端之间共享。请注意,即使请求cookie未直接缓存,如果您在页面中呈现依赖于cookie的内容(例如,如果您将cookie用于服务器端会话状态,如身份验证),您也将缓存个性化响应

如果设置为缓存控制“max age=7200,代理重新验证”,该怎么办?再次感谢


同样的事情
proxy revalidate
通知任何代理(如果有)它们可能无法为过时的缓存提供服务。例如,一旦7200秒过去,应立即清除缓存。如果不这样做,缓存通常会继续为过时的缓存提供服务,然后在达到超时后在后台获取新副本。是否-取决于代理。

我确实希望我的实际文件缓存在代理上,但不希望缓存单个用户的cookie。我该怎么做?非常感谢。我已经更新了我的问题。任何额外的帮助都会很好。您说过
代理不会缓存对具有Cookie头的请求的响应