我有一个表单,我通过ajax提交。我正在使用jquery表单插件。我想要做的是获取从我的服务器返回的“位置”标头。我可以看到它在firebug。但是当我在成功回调中调用getResponseHeader()函数时,它总是返回’undefined’..
码:
form.ajaxForm({ dataType: 'xml',data: {format: 'xml'},resetForm: true,success: function(xml,status,xhr){ var location = xhr.getResponseHeader('Location'); alert(location); });
位置未定义。但是我可以在firebug中看到“位置”标题。我失踪了什么即使我从xhr对象调用getAllResponseHeaders(),它返回’undefined’
解决方法
如果这是一个
CORS request,您可能会看到调试工具中的所有标头(例如Chrome-> Inspect Element-> Network),但是xHR对象只会检索标题(通过xhr.getResponseHeader(‘Header’))if这样的标题是
simple response header:
>内容类型
>最后修改
>内容语言
>缓存控制
>到期
> Pragma
如果不在此集合中,则必须存在于服务器返回的Access-Control-Expose-Headers标头中。
关于这个问题,如果是CORS请求,那么只有在下面的标题中,只有当下面的标题出现时,才能检索XMLHttpRequest对象的Location头。
Access-Control-Expose-Headers: Location
如果它不是CORS请求,XMLHttpRequest将在检索它时没有问题。