在某些情况下,PHP无法从Chrome读取Cookie

时间:2013-04-29 21:36:11

标签: php google-chrome cookies

今天出现了这个问题,它似乎与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;
  • $ httponly is false
  • $ path is'/'
  • 名称由小写字母组成
  • 该值由数字和短划线组成

我可以在Developer Tools / Resources选项卡中看到cookie,它在简单的html页面上工作正常。

我感谢任何帮助。 感谢。

2 个答案:

答案 0 :(得分:0)

重定向页面和重定向程序页面位于同一个域中?也许这可以被视为XSS尝试窃取cookie。尝试发送" Access-Control-Allow-Origin:*"头:

header("Access-Control-Allow-Origin: *" );

答案 1 :(得分:0)

在我的情况下,问题出在session_set_cookie_params()上,域的参数(第三个参数)以句点.开头,例如“ .localhost”。当我删除.时,填充了$ _COOKIE变量。

相关问题