【问题标题】:jquery: unable to print ajax response header (Jquery 1.7.1)jquery:无法打印 ajax 响应标头(Jquery 1.7.1)
【发布时间】:2012-01-11 17:08:44
【问题描述】:
  $.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

【问题讨论】:

  • 遵循重定向,最终响应根本没有位置标头。
  • 数据类型可能导致问题,请参见此处:stackoverflow.com/questions/5614735/…
  • @Jon dataType 不是问题;试过json,应用程序/json。问题仍然存在。我想这与“位置”标题有关
  • Satish,您可能想解决@ThiefMaster 的评论...这是正在提交表单的页面吗?
  • @ThiefMaster 我认为透明重定向是这里的问题:发现另一个相同的问题:stackoverflow.com/questions/228225/…

标签: javascript jquery ajax json jquery-1.7


【解决方案1】:

我与@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 版本更正了此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 2012-10-09
    • 1970-01-01
    • 2014-03-30
    • 2018-02-17
    • 1970-01-01
    相关资源
    最近更新 更多