一尘不染

jQuery getResponseHeader总是返回“未定义”?

ajax

我有一个要通过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);
  });

位置未定义。但是我可以在Firebug中看到“
Location”标头。我想念什么?即使我从xhr对象调用getAllResponseHeaders(),它也会返回“ undefined”


阅读 364

收藏
2020-07-26

共1个答案

一尘不染

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

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

如果它不在此集合中,则它必须出现在 服务器返回的Access-Control-Expose-
Headers
标头中。

关于所讨论的情况,如果它是一个CORS请求,则仅当并且也存在以下标头时,才能Location通过XMLHttpRequest对象检索标头:

Access-Control-Expose-Headers: Location

如果它不是CORS请求,XMLHttpRequest则检索它不会有任何问题。

2020-07-26