一些背景:
除了 PHPSESSID,CakePHP 还会编写自己的会话 ID cookie。这用于验证请求。然后 SWFupload 发送一个文件,该令牌进行身份验证,并作为新的用户代理被拾取 - 所以在 cakephp 中,您必须禁用“check-user-agent”安全功能。
在许多浏览器上,这已经足够了。IE7 版本和 SWF 版本似乎与这个 bug 没有关联。在我们的例子中,IE7 存储/发送了同一个 cookie 的两个版本。那么第一个问题是为什么?如何?
进一步说明:
因为这些重复的 cookie 存储在标头字符串的开头和结尾,所以 PHP/Cake 如果它是重复的,则接收一端,因此它“选择”一个,而我在 swfobject 中设置和发送的手动 cookie 是另一个 cookie。我可以想出一些技巧来解决这个问题——但我真的很想知道这种情况最初是如何出现的。
CakePHP 似乎也不会在注销和登录时生成唯一的 CakeSession id,这可能是原因,解决方案可能是强制 cake 在任何地方使用 PHPSESSID,或者只是确保 swfupload 发送正确的 SESSID ...
编辑一: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=/
欢迎任何想法!