今天出现了这个问题,它似乎与webkit有关。
在通过位置重定向的页面[301/302] HTTP标头(在这种情况下为404错误页面)PHP无法读取cookie - 这意味着$ _COOKIE是一个空数组。
我知道在相同的响应中断使用Set-Cookie和Location标头的webkit错误,但这是关于读取不写,所以它应该在请求标头中。
我正在使用最新的Chrome v26。在后端我在我的家庭服务器上有PHP 5.3.10-1ubuntu3.6,并且在生产服务器上完全相同(我没有设置它并且它不是默认设置)。在生产服务器上,我无法像之前所说的那样读取cookie,但我可以在我的家/ dev服务器上读取。
情况变得更糟:在运行PHP 5.3.3-7 + squeeze14的另一台服务器上,如果Content-Type标头不是html,我也无法读取cookie,而是text / plain。
我按以下方式设置了Cookie:
if (setcookie($name, $value, $expire, $path, null, isset($_SERVER['HTTPS']), $httponly))
{
$_COOKIE[$name] = $value;
return true;
}
return false;
我可以在Developer Tools / Resources选项卡中看到cookie,它在简单的html页面上工作正常。
我感谢任何帮助。 感谢。
答案 0 :(得分:0)
重定向页面和重定向程序页面位于同一个域中?也许这可以被视为XSS尝试窃取cookie。尝试发送" Access-Control-Allow-Origin:*"头:
header("Access-Control-Allow-Origin: *" );
答案 1 :(得分:0)
在我的情况下,问题出在session_set_cookie_params()
上,域的参数(第三个参数)以句点.
开头,例如“ .localhost”。当我删除.
时,填充了$ _COOKIE变量。