xhr.getAllResponseHeaders()仅返回一个标头

时间:2013-12-19 05:53:10

标签: javascript jquery ajax json node.js

我们将Node.js作为服务器,帮助我们从客户端html获取远程休息服务我试图通过使用以下代码从jQuery Ajax调用获取响应头:

$.ajax({
  type: "get",
  url: newUrl,
  crossDomain: true,
  cache: false,
  dataType: "json",
  contentType: "application/json; charset=UTF-8",
  success: function(data, textStatus, xhr) {
    var responseText = JSON.stringify(data);
    alert(xhr.getAllResponseHeaders());
  },
  error: function (xhr, textStatus, errorThrown) {
    console.log(errorThrown);
  }
});

但问题是,我只得到一个响应头:Content-Type: application/json剩下的东西都被忽略了。根据我的研究,我发现我需要添加Access-Control-Allow-Headers才能使其可用。所以在Node我试过这样:

res.writeHead(200, {
  'Content-Type': 'application/json',
  'Access-Control-Allow-Origin': '*', 
  'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE',
  'Access-Control-Allow-Headers': 'Content-Type, Access-Control-Allow-Origin'
});

但我仍然只得到一个标题Content-Type。你能帮忙找出这个问题吗?顺便说一句,这是一个跨域调用。

2 个答案:

答案 0 :(得分:4)

最后,我可以从Node.js方面解决此问题。 我添加了两个

  

访问控制曝光标题访问控制允许标题

到node.js中的响应头。这解决了我的问题。早些时候我只有Access-Control-Allow-Headers

答案 1 :(得分:2)

你想要什么标题?将其添加到Access-Control-Allow-Headers。 (我不确定CORS标题是否显示,但你可能不需要它们。)

'Access-Control-Allow-Headers': 'Header1, Header2, Header3'