我正在通过设置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
看不到这个?
答案 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 Cookie浏览器显示的默认路径为/cgi-bin/
,document.cookie
为空。添加路径后,Cookie浏览器会正确显示/
的路径,而document.cookie
现在会神奇地显示Cookie。我无法在任何地方的RFC中找到这个。至少有一个RFC明确指出name=value
就足够了。