代码之家  ›  专栏  ›  技术社区  ›  Christos Hayward

为什么Cookie会在IE6/8中消失,我该怎么办?

  •  1
  • Christos Hayward  · 技术社区  · 17 年前

    FF3/Chrome上的行为符合预期,至少在选中“记住我”复选框的情况下是这样:在您被视为登录的网站上的任何地方和任何地方登录。

    非常感谢。我已经下载了Fiddler 2。

    5 回复  |  直到 17 年前
        1
  •  3
  •   Paul Dixon    17 年前

    • 尝试使用 Fiddler 或者类似地检查HTTP请求和响应,以查看正在发送和传输的Cookie。这为我们提供了更多关于问题所在的见解
    • 尝试让你的应用程序输出 P3P header header('P3P: CP="CAO PSA OUR"');
        2
  •  2
  •   Sean McSomething    17 年前

    有一件事可能会让你大吃一惊,那就是IE不允许域名带有下划线(例如:developer_1_test.example.com),而其他浏览器则允许你这样做。你不太可能在生产环境中这样做,但在为不同的开发人员/代码分支等设置大量vhost的开发环境中,这是一个很容易的疏忽。

        3
  •  1
  •   karim79    17 年前

    你需要更具体。找出如何在两个浏览器上复制这种行为,你就发现了你的错误。例如,可能有一两个页面您无法调用 session_start() .

    重要的是要记住,如果你的特定$_SESSION变量不可见,并导致重定向到你的登录,那么很可能是你的系统的一部分坏了。

        4
  •  1
  •   cOle2    17 年前

    当发生这种情况时,我首先检查的是setcookie()函数的域参数是否设置正确。

    我见过cookie域设置为“example.com”但网站是通过“www.example.com”访问的情况。

    解决方法是确保您的所有内部链接都是一致的,或者您将cookie设置为“.example.com”,这将为所有子域启用cookie。

        5
  •  1
  •   Christos Hayward    17 年前

    我最终发现如下:Firefox和IE的行为不同,因为当丢失的文档在已设置的14天Expires:标头内时,它们对缓存的处理方式不同。

    Firefox显然检查了一次丢失的数据,然后不再请求。

    因此,它是缓存差异、间接包含和404页面行为。