$.ajax({
async:false,
type: 'POST',
url: itemURL,
success: function(data,status,jqXHR) {
responseObj = data;
console.log('success function resp');
console.log(jqXHR.getAllResponseHeaders());
},
error: function(data){
responseObj = data;
},
data:item,
dataType: "json",
});
这是我的代码;我无法打印响应标题;我错过了什么吗?所有打印出来的都是空字符串。
尝试使用getResponseHeader(“位置”),这也不起作用;我正在尝试获取为AJAX调用返回的“Location”标题。
然而,firbeug显示了我所追求的所有响应标题,包括“位置”。
我正在使用Jquery 1.7.1
答案 0 :(得分:2)
我与@Satish一起帮助回答了这个问题。这基本上是一个CORS问题,但事实证明这里涉及两个问题:
1)服务器需要将“位置”添加到Access-Control-Expose-Header响应头,这样可以使符合XHR Level-2的客户端看到额外的头。
2)WebKit客户端有一个错误,他们会在返回XHR响应的标头时忽略Access-Control-Expose-Header。这在最近的https://bugs.webkit.org/show_bug.cgi?id=76419 WebKit中得到了修复,我们验证它现在基于该WebKit在Safari中工作。
为了添加一些背景知识,请求是POST到REST服务以创建对象。服务器响应的状态为201,并将新资源的位置存储在“位置”标头中。由于这是一个CORS请求,XHR正在剥离“位置”标题。添加标题并使用修复程序升级到WebKit版本已更正此问题。