Javascript:看不到服务器cookie



我在服务器上手动创建cookie,方法是如下设置HTTP头:

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中看不到这个吗?

已修复,但我对此不满意。Firefox和Chrome都需要一个非默认的Path,以便Javascript可以看到cookie。这不起作用:

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 cookie浏览器显示默认路径/cgi-bin/,而document.cookie为空。添加路径后,cookie浏览器正确地显示了/的路径,而document.cookie现在神奇地显示了cookie。我在RFC中找不到这个。RFC中的至少一个明确地声明CCD_ 10是足够的。

最新更新