jQuerygetResponseHeader总是返回“未定义”?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (169)

我有一个表单,我是通过Ajax提交的。我正在使用jQuery表单插件。我想要做的是获取从我的服务器返回的‘Location’头。但是,每当我在成功回调中调用getResponseHeader()函数时,它总是返回‘unfined’.

代码:

form.ajaxForm({
  dataType: 'xml',
  data: {format: 'xml'},
  resetForm: true,
  success: function(xml,status,xhr){
    var location = xhr.getResponseHeader('Location');
    alert(location);
  });

位置未定义。但我能看到“位置”标题。我错过了什么?即使我从xhr对象调用getAllResponseHeader(),它也会返回“unfined”

提问于
用户回答回答于

如果这是一个CORS请求,你可能会看到调试工具中的所有头文件(例如Chrome-> Inspect Element-> Network),但是xhr.getResponseHeader('Header')如果头文件是一个简单的响应头文件,xHR对象将仅检索头文件(通过):

  • Content-Type
  • Last-modified
  • Content-Language
  • Cache-Control
  • Expires
  • Pragma

如果它不在这个集合中,它必须出现在由服务器返回的Access-Control-Expose-Headers报头中。

有关问题的情况下,如果它是一个请求CORS,一个将只能检索Locationthrogh头XMLHttpRequest对象,如果且仅当,下面的标题也存在:

Access-Control-Expose-Headers: Location

如果它不是CORS请求,XMLHttpRequest将不会检索它。

用户回答回答于

一个XMLHttpRequest将透明地遵循重定向,所以最终的请求不会有头,它已经遵循了重定向,并且你看到了来自请求的响应头(而不是具有Location头的初始请求)。

扫码关注云+社区

领取腾讯云代金券