我有一个要通过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”
如果这是一个CORS请求,则您可能会在调试工具中看到所有标头(例如Chrome-> Inspect Element-> Network),但是如果xHR对象仅xhr.getResponseHeader('Header')是一个简单的响应标头,则xHR对象将仅通过检索标头:
xhr.getResponseHeader('Header')
Content-Type
Last-modified
Content-Language
Cache-Control
Expires
Pragma
如果它不在此集合中,则它必须出现在 服务器返回的Access-Control-Expose- Headers标头中。
关于所讨论的情况,如果它是一个CORS请求,则仅当并且也存在以下标头时,才能Location通过XMLHttpRequest对象检索标头:
Location
XMLHttpRequest
Access-Control-Expose-Headers: Location
如果它不是CORS请求,XMLHttpRequest则检索它不会有任何问题。