【发布时间】:2012-04-26 06:24:31
【问题描述】:
我正在寻找有关 stackoverflow 的答案,但他们都无法解决我的问题。 我有一个网站托管在http://machine/~lcavaill/folder/
在 php 中我使用
setcookie( COOKIE_AUTH, $cookie, $expiration, COOKIE_PATH, COOKIE_DOMAIN, false, true )
具有以下变量
define( 'COOKIE_DOMAIN', 'machine' );
define( 'COOKIE_PATH', '/~lcavaill/folder/' );
define( 'COOKIE_AUTH', 'foobar' );
$expiration = time() + 300;
在查看响应标头时,我肯定会找到 Set-Cookie 标头
Set-Cookie:test=lcavaille%7C1335420792%7C44baaa2b2eb43cfb8ab2d66f74afd11e; expires=Thu, 26-Apr-2012 06:13:12 GMT; path=/~lcavaill/folder/; domain=machine; httponly
但是对于另一个页面上的下一个请求,cookie 没有设置,我在 Chrome(或 IE)的任何地方都找不到它,但它在 Firefox 中按预期工作。
到目前为止我检查过:
- 如果客户端和服务器时间同步
- 如果 Chrome 隐私设置正常(允许设置本地数据且无例外)
- $_SERVER["HTTP_HOST"] 匹配 COOKIE_DOMAIN 变量
- 启用/禁用 http_only
- 将 cookie 路径设置为 /
- 将过期时间设置为 0
你对我有什么想法吗?!
干杯, 狮子座
【问题讨论】:
-
不显式设置cookie路径是否有效?即,检查是否像 setcookie('test', '1'); 这样简单工作。
-
@Olaf 不设置路径不会改变任何东西。一个简单的请求就可以工作并设置一个 cookie 测试:
Set-Cookie: blabla=lcavaille%7C1335425726%7Cab4a9752133970811c50ca69ccfa6206; expires=Thu, 26-Apr-2012 07:35:26 GMT; domain=machine; httponly Set-Cookie: test=1 -
我建议您在 Chrome (chrome.google.com/webstore/detail/…) 中安装“编辑此 cookie”扩展程序,然后逐步更改代码中的 cookie 定义并检查 cookie 发生的情况和时间不再设置。它会给你很多有用的信息。
标签: php google-chrome cookies web