我在服务器上手动创建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是足够的。