一些背景:
除了 PHPSESSID 之外,CakePHP 还写入它自己的会话 ID cookie。这用于验证请求。然后 SWFupload 发送一个文件和该令牌进行身份验证,并被选为新的用户代理 - 因此在 cakephp 中,您必须禁用“check-user-agent”安全功能。
在许多浏览器上这已经足够了。 IE7版本和SWF版本似乎与此错误没有关联。在我们的例子中,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=/
欢迎任何想法!
如果两个 cookie 设置为不同的域或路径,则它们可能具有相同的名称。
例如,如果您在“www.example.com”和“example.com”上设置了 cookie“ID”,则对于“www.example.com”或“anything.com”的每个请求都会发送两个 ID cookie。 www.example.com”。
为了防止这种情况发生,请确保您始终为同一域设置 cookie,如果您碰巧有多个域名别名到同一服务器(例如 www.example.com 和 example.com),则将一个重定向到另一个。
同样,不要设置具有不同路径值的同名 cookie。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)