【发布时间】:2014-03-23 17:28:51
【问题描述】:
我从本地主机试图访问谷歌API。 Chrome的说,这是不可能的,因为原产地 P>
XMLHttpRequest cannot load https://maps.googleapis.com/maps/api.... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.
我使用https-browserify使AJAX请求。 P>
options = {
hostname: "maps.googleapis.com",
port: 443,
path: "/maps/api/....",
method: "get",
headers: {
"Origin": null,
"Referer": null
}
};
result = null;
req = https.request(options, function(res) {
res.on("data", function(chunk) {
return result += chunk;
});
return res.on("end", function() {
debugger;
});
});
req.end();
但是,这并没有帮助。 Origin和Referer头仍然存在提出这个要求的时候。如何删除它们?
【问题讨论】:
-
铬抱怨的响应报头,而不是一个请求报头。关闭这些请求头将不会帮助(我不认为它可能)。 SPAN>
-
@ AaronDufour但为什么当我贴在Chrome GET链接一切正常?它返回我有效的JSON。我想从我的代码获得相同的JSON。 SPAN>
-
上AJAX请求有浏览器的执行限制,以防止数据窃取。例如,如果你登录到Gmail和其他应用程序发出GET请求时,它会与您的Cookie发送,然后它们会得到您的电子邮件!因此,服务器必须按顺序从其他领域AJAX请求发送
Access-Control-Allow-Origin头被允许获得数据。我想到的是,Maps API是不应该这样使用 - 您应该咨询自己的文档产品的正确使用 SPAN> -
@ AaronDufour有什么区别,如果我部署和启动从生产服务器相同的代码?看来,问题只在很奇怪我“localhost”的域名。为什么我不能从本地主机测试API访问? SPAN>
-
它不会在生产工作,无论是。问题不域是
localhost,其从所述AJAX请求的域其不同的(即,其不maps.googleapis.com)。跨度>
标签: node.js https http-headers npm request-headers