今天出现了这个问题,似乎和webkit有关。
在通过位置 [301/302] HTTP 标头(在这种情况下为 404 错误页面)重定向的页面上,PHP 无法读取 cookie - 这意味着 $_COOKIE 是一个空数组。
我知道在同一响应中使用 Set-Cookie 和 Location 标头的 webkit 错误会中断,但这是关于读取而不是写入,因此它应该位于请求标头中。
我正在使用最新的 Chrome v26。在后端,我的家庭服务器上有 PHP 5.3.10-1ubuntu3.6,在生产服务器上完全相同(我没有设置,也不是默认设置)。在生产服务器上,我无法像之前所说的那样读取 cookie,但在我的家庭/开发服务器上我可以。
更糟的是:在另一台运行 PHP 5.3.3-7+squeeze14 的服务器上,如果 Content-Type 标头不是 html,而是 text/plain,我也无法读取 cookie。
我通过以下方式设置 cookie:
if (setcookie($name, $value, $expire, $path, null, isset($_SERVER['HTTPS']), $httponly))
{
$_COOKIE[$name] = $value;
return true;
}
return false;
- $httponly 是假的
- $路径是'/'
- 名称由小写字母组成
- 该值由数字和破折号组成
我可以在开发人员工具/资源选项卡中看到 cookie,它在简单的 html 页面上运行良好。
我很感激任何帮助。谢谢。