jquery getResponseHeader总是返回'undefined'?

dem*_*sus 16 ajax jquery xmlhttprequest jquery-forms-plugin

我有一个表格,我通过ajax提交.我正在使用jquery表单插件.我想要做的是获取从我的服务器返回的'Location'标题.我可以在萤火虫中看到它.但是每当我在成功回调中调用getResponseHeader()函数时,它总是返回'undefined'.

码:

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

位置未定义.但我可以在萤火虫中看到"位置"标题.我错过了什么?即使我从xhr对象调用getAllResponseHeaders(),它也会返回'undefined'

acd*_*ior 31

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

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

如果它不在此集中,则它必须存在于服务器返回的Access-Control-Expose-Headers标头中.

关于这个案例,如果它是一个CORS请求,只有当下面的标题也存在时,才会能够检索到LocationXMLHttpRequest对象的标题:

Access-Control-Expose-Headers: Location
Run Code Online (Sandbox Code Playgroud)

如果它不是CORS请求,XMLHttpRequest则检索它没有问题.


Nic*_*ver 6

XMLHttpRequest将透明地遵循重定向,因此最终请求将不具有标头,它已经跟随该重定向并且您正在看到来自请求的响应标头(而不是具有Location标头的初始请求).