jquery:无法打印ajax响应头(Jquery 1.7.1)

时间:2012-01-11 17:08:44

标签: javascript jquery ajax json jquery-1.7

  $.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

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版本已更正此问题。