代码之家  ›  专栏  ›  技术社区  ›  Jonathan Hendler

当IE7中有两个同名cookie时,该怎么办?

  •  4
  • Jonathan Hendler  · 技术社区  · 16 年前

    除了PHPSESSID之外,CakePHP还编写自己的会话id cookie。这用于对请求进行身份验证。然后,SWFupload发送一个文件和该令牌以进行身份验证,并作为新的用户代理进行提取——因此在cakephp中,必须禁用“检查用户代理”安全特性。

    在许多浏览器上,这就足够了。IE7版本和SWF版本似乎与这个bug没有关联。在我们的例子中,IE7存储/发送同一cookie的两个版本。第一个问题是为什么?怎样

    因为这些重复的cookie存储在头字符串的开头和结尾,所以如果它是重复的,PHP/Cake会收到一端,因此它会“选择”一个,而我在swfobject中设置并发送的手动cookie是另一个cookie。我可以想出一些方法来解决这个问题,但我真的很想知道这种情况是如何首先出现的。

    CakePHP似乎也不会在注销和登录时生成唯一的CakeSession ID,这可能是原因所在,解决方案可能是强制cake在任何地方使用phpsID,也可能只是为了确保swfupload发送正确的session ID。。。

    CakePHP发送的Cookie的标题为:

    Set-Cookie: CAKEPHP=gqlpa88blmhmdsmv9e99ga16b3; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/
    Set-Cookie: CAKEPHP=deleted; expires=Wed, 06-Aug-2008 13:21:01 GMT; path=/
    Set-Cookie: CAKEPHP=ob5695trnspprlohiunrpqgkm0; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/
    

    2 回复  |  直到 16 年前
        1
  •  7
  •   EricLaw    16 年前

    如果为不同的域或路径设置了两个cookie,则它们可能具有相同的名称。

    例如,如果您在“www.example.com”和“example.com”上设置了一个cookie“ID”,那么对于“www.example.com”或“anything.www.example.com”的每个请求都会发送两个ID cookie。

    同样,不要将相同名称的cookie设置为不同的路径值。

        2
  •  4
  •   Atmocreations    16 年前

    就我所记得的,如果你设置了一个已经存在的cookie,它只会覆盖旧cookie的值和过期日期。。。这是每个域。意味着您可以在/和/任意项下拥有两个同名cookie,并且它们不会相互覆盖。

    或者这不是你要问的吗?