我正在使用PHP5.3,Apache 2.2和Zend Framework 1.11,当我使用curl执行请求时,我得到了两个具有两个不同会话ID的Set-Cookie标头。
有什么想法吗?
> POST /api/register HTTP/1.1
> Authorization: Basic Ymd1ZXJ0eQ==
> Host: api.domain.tld
> Accept: */*
> Content-Length: 66
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 200 OK
< Date: Wed, 07 Dec 2011 13:27:07 GMT
< Server: Apache
< X-Powered-By: PHP/5.3.8
< Set-Cookie: SESSID=vtvackh55bj1up3ouoq4bhk545; expires=Thu, 06-Dec-2012 19:15:53 GMT; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
< Pragma: no-cache
< Set-Cookie: SESSID=79a1g98e0pkqlq8fo7elpe9492; expires=Thu, 06-Dec-2012 19:15:53 GMT; path=/
< Vary: Accept-Encoding,User-Agent
< Content-Length: 128
< Content-Type: application/json
答案 0 :(得分:1)
您的服务器应用程序两次发出Set-Cookie
标头。这可以来自任何地方,如果没有看到所有代码就无法分辨。
寻找处理会话处理的事情。如果涉及第三方代码,请将其禁用并查看问题是否仍然存在。
答案 1 :(得分:0)
默认情况下,Zend_Auth使用PHP会话从成功的身份验证尝试中提供身份的持久存储。
也许您在某个地方使用了AuthAdapter来启动会话,后来又试图自己操作它,以另一个具有不同会话ID的会话开始。
我在Zend 2中遇到了这个问题。
我首先使用AuthenticationService进行身份验证,并在成功通过身份验证后尝试使用Zend Session Container来操纵会话。
我已经使用会话容器来显式regenerateId()并设置了一些其他标头,例如安全的,http_only,结果我有两个像您这样的会话标头。