我们将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
。你能帮忙找出这个问题吗?顺便说一句,这是一个跨域调用。
答案 0 :(得分:4)
最后,我可以从Node.js
方面解决此问题。
我添加了两个
访问控制曝光标题和访问控制允许标题
到node.js中的响应头。这解决了我的问题。早些时候我只有Access-Control-Allow-Headers
。
答案 1 :(得分:2)
你想要什么标题?将其添加到Access-Control-Allow-Headers。 (我不确定CORS标题是否显示,但你可能不需要它们。)
'Access-Control-Allow-Headers': 'Header1, Header2, Header3'