是否可以从JavaScript中的HTTP响应头获取设置的Cookie值?

是否可以从JavaScript中的HTTP响应头获取设置的Cookie值?,javascript,jquery,ajax,http-headers,xmlhttprequest,Javascript,Jquery,Ajax,Http Headers,Xmlhttprequest,我正在使用来进行一些异步服务器调用,并希望捕获由于会话超时而导致调用失败的情况 通过查看本例中的响应头,我发现它们包括 Set-Cookie: SMSESSION=LOGGEDOFF 这似乎是一个相当可靠的测试。但是调用传递给jQuery的error回调的XMLHttpRequest对象上的getAllResponseHeaders,显然会返回一个空字符串,我很难找到任何其他获取头信息的方法 这可能吗?如果文档来自相同的域和路径,请使用document.cookie接口 如果cookie设置了

我正在使用来进行一些异步服务器调用,并希望捕获由于会话超时而导致调用失败的情况

通过查看本例中的响应头,我发现它们包括

Set-Cookie: SMSESSION=LOGGEDOFF
这似乎是一个相当可靠的测试。但是调用传递给jQuery的
error
回调的
XMLHttpRequest
对象上的
getAllResponseHeaders
,显然会返回一个空字符串,我很难找到任何其他获取头信息的方法


这可能吗?

如果文档来自相同的域和路径,请使用document.cookie接口
如果cookie设置了http only属性,那么它是不可访问的

如果您阅读W3 XHR规范,您将看到它们不允许您通过
getAllResponseHeaders('set-cookie')
调用访问
set cookie
响应头

请参见4.7.3 getResponseHeader()方法:

要点3:“如果标头是Set-Cookie或Set-Cookie2的不区分大小写的匹配项,则返回null。”


jfriend00也在上面的评论中留下了这个回复,但我认为这个问题可能需要一个合理的答案。

@quantumSoup:好吧,看来它是重复的,所以我将关闭这个。。。不过,要澄清的是,您不能访问响应标题的正确答案是什么?另一个问题的一个答案提到了
getAllResponseHeaders
,并且有17张赞成票。@zzzz:我也有类似的想法。。。但是,似乎直到调用回调之后才会发生这种情况;我这样说对吗?我想我可以在
complete
回调中执行某种
setTimeout
处理,在这种情况下……根据这个规范(),
getAllResponseHeaders()
将返回除
Set Cookie
头以外的所有头。您必须通过cookie接口才能获取cookie。@jfriend00:遗憾的是,我看到的似乎是:(1)
getAllResponseHeaders()
正在返回
(可能jQuery正在这样做?);(2)浏览器实际上没有更新所讨论的cookie。虽然我可以说cookie是安全的,并且没有过期,但我对HTTP的理解还不够透彻,不知道为什么。无论如何,令人沮丧的是,我无法从响应头中获取
Set Cookie
的值,因为这才是我真正关心的(即,如果服务甚至试图将Cookie设置为
LOGGEDOFF
,这就是我想知道的)。你知道这是为了安全吗?