2
  $.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("Location"),这也不起作用;我正在尝试获取为 AJAX 调用返回的“位置”标头。

但是 firbeug 显示了所有响应标头,包括我所追求的“位置”。

我正在使用 Jquery 1.7.1

4

1 回答 1

2

我与@Satish 一起帮助回答了这个问题。这基本上是一个 CORS 问题,但事实证明这里涉及两个问题:

1) 服务器需要将“Location”添加到 Access-Control-Expose-Header 响应头中,这允许符合 XHR Level-2 的客户端看到额外的头。

2) WebKit 客户端一个错误,当返回 XHR 响应的标头时,他们会忽略 Access-Control-Expose-Header。最近在 WebKit 中修复了这个问题https://bugs.webkit.org/show_bug.cgi?id=76419,我们验证它现在可以在基于该 WebKit 的 Safari 中运行。

只是为了添加一些背景,该请求正在 POST 到 REST 服务以创建对象。服务器响应的状态为 201,并将新资源的位置存储在“Location”标头中。由于这是一个 CORS 请求,因此 XHR 正在剥离“Location”标头。添加标头并通过修复升级到 WebKit 版本更正了此问题。

于 2012-02-03T23:21:31.837 回答