Setcookie 语法 Google Chrome

20

我正在使用以下语法来设置cookie:

Set-Cookie:Cookie-name=value; path=/; Max-Age=1296000; HttpOnly

在谷歌浏览器控制台上显示该cookie的日期无效。语法有什么问题?
根据http://en.wikipedia.org/wiki/HTTP_cookie#Expires_and_Max-Age和http://tools.ietf.org/html/rfc6265#section-5.2.2,我可以使用Max-Age来指定相对到期时间。

根据维基百科页面,如果您按照相关的RFC链接进行操作,它明确指出并非所有用户代理都支持max-age,如果发现该参数,则会忽略它。 - Marc B
是的,在这里看到了相同的情况。简单的 PHP setcookie('x','y',123+time(),'/','.domain.com'); 显示为无效 cookie。 - Toby
@VivekGoel,顺便说一下,根据RFC 6265 http://tools.ietf.org/html/rfc6265#section-4.1.1,`Set-Cookie:`后面需要加一个空格。当然,任何浏览器都不会抱怨... - Pacerier
@Pacerier 好的,谢谢。但这不是问题所在。我尝试了加空格,但它仍然报同样的错误。 - Vivek Goel
@VivekGoel,我知道这与问题无关。 - Pacerier
显示剩余4条评论
2个回答

6

我认为这不是你能/应该解决的问题。正如其他用户所示,你使用的检查器/开发工具并不总是正确的。在“网络”工具中也有其他情况下开发工具是错误的。
你可以安装像编辑此Cookie这样的扩展程序来了解你的Cookie行为。虽然它不能帮助你跟踪重定向,但它有助于了解设置的Cookie并允许你进行更改。


4

更新

我进行了额外的测试,得出与下面问题123013相同的结论。我认为这只是一个DevTools的错误。

DevTools > Network似乎不正确地显示日期。然而,DevTools > Resources正确显示日期和其他浏览器类似。

另外,我创建的另一个Cookie已经正确过期。这在DevTools > Resources中得到了反映,但在DevTools > Network中没有。

测试结果

setcookie('foo', 'bar', time()+3600, "/", NULL, false, true);

Chrome v24.0.1312.57
  Resources > Cookies   Thu, 14 Feb 2013 17:08:33 GMT
  Network > Cookies     Invalid Date

Firefox 18.0.2          Thursday, February 14, 2013 11:59:15 AM
IE9 9.0.8112.16421      Thu, 14-Feb-2013 17:06:42 GMT

最后,总的来说,你的语法看起来是正确的。"Invalid Date"这条信息看起来像是Chrome的一个bug。
我无法在Chrome v24.0.1312.57上重现这个问题。我用JavaScript和PHP设置了各种测试cookie。Chrome没有抛出任何错误,并正确地将我传递的max-age值转换为相应的expires值。
这个bug或者类似的问题已经被提交并修复。 WebKit Chromium

它不是固定的。在php中尝试这个 - setcookie('blah', 'blah', time()+100, "/", NULL, false, true); 顺便说一句,我在ubuntu 12.04上测试了你在答案中报告的相同版本的chrome。 - Shrinath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接