【问题标题】:Set-Cookie present in header response but missing in browser标头响应中存在 Set-Cookie 但浏览器中缺少
【发布时间】:2015-12-18 09:29:08
【问题描述】:

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

来自服务器端的 Set-Cookie 标头:

浏览器收到的响应中缺少 Set-Cookie 标头:

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

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

【问题讨论】:

  • 在此之前,您确定您没有发送任何内容吗?尝试将session_start() 移动到第一行代码。
  • @bansi 是的,它在顶部.. 但无论如何,它与 cookie 有关..即使 phpinfo() 中存在响应,即使 setcookie() 函数也没有在浏览器中设置任何 cookie输出

标签: php session cookies


【解决方案1】:

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

此错误发生在以前由其他人构建的网站中。这个错误似乎很不寻常,我认为问题很可能出在 Apache 上。我删除了 Apache 并重新安装,但没有任何效果。然后我安装了 Nginx 看看问题出在 Web Server 软件还是服务器本身。我发现 Session 在 Nginx 中运行良好。所以问题肯定出在某个地方的 Apache 上。

当我检查文件时发现在 Cookie 下方某处的 .htaccess 文件中未设置!!

Header unset Cookie
Header unset Set-Cookie

没想到有人会这么说!但无论如何,删除上述解决了问题。

【讨论】:

  • 很好发现 - 一定是“有趣”(读作“令人沮丧”)试图弄清楚发生了什么。 ;-/
【解决方案2】:

我的服务提供商遇到了同样的行为。原来是他们这边的缓存问题(清漆缓存)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 2023-03-25
    • 2014-08-24
    • 2012-05-02
    • 2017-08-25
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多