Javascript:看不到服务器cookie

时间:2014-06-12 22:53:40

标签: javascript cookies cgi

我正在通过设置HTTP标头在服务器上手动创建cookie,如下所示:

Status: 200 OK
Set-Cookie: downloadDone=3196
Content-type: application/octet-stream
Content-disposition: attachment; filename="foo"

我可以在Chrome和FF调试器上确认传入标头也是这样的。但是,我无法从Javascript中读取此cookie。 document.cookie为空,Chrome调试器也将其显示为空:

document: document
  cookie: ""

Chrome和FF 实际设置了Cookie。他们甚至在下次请求时将其发送回服务器;调试器在请求头中显示:

Cookie:downloadDone=3196

我认为任何一个浏览器都不认为HttpOnly已设置,但两个调试器似乎都是cookie,所以我可能错了。 知道为什么我在document.cookie看不到这个?

1 个答案:

答案 0 :(得分:3)

已修复,但我对此并不满意。 Firefox和Chrome都需要非默认Path才能让Cookie对Javascript可见。这不起作用:

Status: 200 OK
Set-Cookie: downloadDone=3196; Max-Age=3600
Content-type: application/octet-stream
Content-disposition: attachment; filename="foo"

但是这个 工作:

Status: 200 OK
Set-Cookie: downloadDone=3196; Path=/; Max-Age=3600
Content-type: application/octet-stream
Content-disposition: attachment; filename="foo"

在发送Path之前,FF Coo​​kie浏览器显示的默认路径为/cgi-bin/document.cookie为空。添加路径后,Cookie浏览器会正确显示/的路径,而document.cookie现在会神奇地显示Cookie。我无法在任何地方的RFC中找到这个。至少有一个RFC明确指出name=value就足够了。