【发布时间】:2011-11-04 01:50:28
【问题描述】:
我正在使用jQuery's ajax() method 进行一些异步服务器调用,并希望捕获由于会话超时而导致调用失败的情况。
通过查看本例中的响应标头,我发现它们包含
Set-Cookie: SMSESSION=LOGGEDOFF
这似乎是一个非常可靠的测试。但是在传递给 jQuery 的 error 回调的 XMLHttpRequest 对象上调用 getAllResponseHeaders 显然会返回一个空字符串,我无法找出任何其他获取该标头信息的方法。
这可能吗?
【问题讨论】:
-
@quantumSoup:好吧,看起来它是重复的,所以我将关闭这个...只是为了澄清一下,正确的答案是你可以的' t 访问响应标头?另一个问题的答案之一提到了
getAllResponseHeaders,并获得了 17 个赞。 -
@zzzz:我也有类似的想法……但似乎直到 回调被调用后才会发生;我说得对吗?我想在这种情况下我可以在
complete回调中做某种setTimeout交易...... -
根据本规范 (w3.org/TR/XMLHttpRequest/#the-getresponseheader-method),
getAllResponseHeaders()将返回除Set-Cookie标头之外的所有标头。您必须通过cookie接口才能获取cookie。 -
@jfriend00:可悲的是,我所看到的似乎是:(1)
getAllResponseHeaders()正在返回""(可能 jQuery 正在这样做?); (2) 有问题的 cookie 实际上并没有被浏览器更新。虽然我可以说 cookie 是安全的并且没有过期,但我对 HTTP 的理解还不够好,无法知道原因。在任何情况下,我都无法从响应标头中获取Set-Cookie的值,这很令人沮丧,因为这才是我真正关心的(即,如果服务甚至 尝试 将 cookie 设置为LOGGEDOFF,这就是我想知道的)。你知道这是为了安全吗?
标签: javascript jquery ajax http-headers xmlhttprequest