Set-Cookie缓存,即使使用F5? (除非我按CTRL + F5)

时间:2018-09-24 11:42:21

标签: php caching cookies

我显然看到,在特定情况下,在执行SetCookie()函数之后,当我重新加载页面(或重新进入该页面)时,除非按{{1} }(已清除缓存的请求)。 您是否遇到过这种情况(这种情况仅发生在文件的CTRL+F5版本上,而不发生在http上)。

这没有帮助:

https

我应该怎么做才能使cookie在下一页输入时阅读?

2 个答案:

答案 0 :(得分:1)

Cookie出错时通常很难调试。您所描述的内容似乎与缓存有关,但听起来很奇怪。

这是您可以尝试执行的操作,以了解问题所在。

  1. 确保您在正确的域和路径中设置cookie。如果您的网页是在www.example.com的域应为.example.comwww.example.com。路径的想法是相同的(如果您访问www.exampl.com/path,则路径需要为//path
  2. 如果您需要cookie在http上可用,则不应在其上设置secure属性。
  3. 确保cookie设置后尚未过期,如果浏览器设置为cookie,浏览器可能会忽略它。

一些基本的检查内容。

假设您有cookie行:

setcookie('name', 'value', time()+10000,'/test','.example.com');

打开Chrome(或您喜欢的浏览器)开发人员控制台,并在发出请求时检查所设置的cookie。应该遵循以下原则:

enter image description here

持续时间不得为0,其余时间应正确。

当您发出下一个请求时,也应发送cookie。

enter image description here

这应该是“请求cookie”中的一项。

如果已接收到cookie,但未将其发送到服务器,则可能值得打开浏览器设置,并手动找到存储的cookie,以获取有关发生这种情况的任何提示。在chrome中,它将在chrome://settings/siteData

如果您仍然没有发现任何错误,请检查是否正在运行任何中间缓存层,这将覆盖您设置的No-Cache标头。

答案 1 :(得分:1)

我发现启用了Nginx缓存,这导致浏览器无法从服务器撤回执行。 我已通过在网址中包含str.__repr__字符串,使该页面调用的缓存无效来解决此问题。