Set-Cookie存在于标头响应中但在浏览器中丢失

时间:2015-12-18 09:29:08

标签: php session cookies

基本上会话不起作用。会话正在生成并存储在服务器的正确文件夹中,但不会像通常的PHPSESSID cookie一样存储在浏览器中。 phpinfo()显示正在发送Set-Cookie标头,但浏览器获取的响应中缺少Set-Cookie标头。请查看以下屏幕截图:

服务器端提供的Set-Cookie标头:

phpinfo screenshot showing Set-Cookie header

浏览器获得的响应中缺少Set-Cookie标头:

browser screenshot showing no Set-Cookie in response

另一个信息是,如果我使用javascript设置cookie,那么它可以工作并显示在浏览器的开发者工具中。

关于会话的一切都很好,只是它试图在浏览器上设置的cookie似乎没有设置。

2 个答案:

答案 0 :(得分:4)

回答原因并修复,因为它可能在将来帮助某人并节省许多时间:

此错误发生在之前由其他人构建的网站中。这个错误似乎很不寻常,我认为这个问题很可能与Apache有关。我删除了Apache并重新安装无效。然后我安装了Nginx以查看问题是否与Web服务器软件或服务器本身有关。我发现Session在Nginx中运行良好。所以问题肯定在Apache某处。

当我查看文件时,发现<。>在.htaccess文件中某处某处的Cookie未被设置 !!

Header unset Cookie
Header unset Set-Cookie

从未想过有人会这么做!但无论如何,删除上面修复了问题。

答案 1 :(得分:0)

与我的服务提供商遇到相同的行为。事实证明,这是一个方面的缓存问题(清漆缓存)。

幸运的是,我能够通过提供的管理后端禁用Varnish-Cache 。之后,客户端响应中将出现Set-Cookie标头。