我的应用程序在我的计算机上本地运行,它正在尝试连接到我的远程 nodeJS/Express 服务器。我已经在我的远程服务器中设置了标题。
主要问题:如何允许我的远程服务器接受来自本地主机的带有参数的请求?人们告诉我,我的请求将不起作用,因为请求的 URL 和服务器 URL 不共享同一个域。该请求来自我的本地主机,它正在尝试访问我的远程节点/快速服务器。此事务在我删除请求中的参数时有效,但在我有参数时无效。
这就是我在远程服务器中设置标头以接受所有请求的方式:
app.use(function (req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "http://localhost:9000");
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
if(res.headersSent) {
console.log("Headers sent");
}
else {
console.log("Headers not sent");
}
next();
});
此外,res.headersSent
即使我可以看到我的 Google 网络选项卡中设置的标头,也会一直评估为 false。为什么这个值返回 false?
这就是我从本地主机向服务器发出 GET 请求的方式:
var req = $http({
url: 'https://20161128t135355-dot-jarvis-hd-live-2.appspot-preview.com/read-message',
method: 'GET',
cache: false,
params: {last_updated: last_updated_time}
});
这篇文章没有帮助如何在 node.js 上的 express.js 框架中启用跨域资源共享 (CORS)
我认为是参数导致了错误,因为当我把它拿出来时它工作正常。我收到此错误:
XMLHttpRequest cannot load https://20161128t135355-dot-jarvis-hd-live-2.appspot-preview.com/read-message?last_updated=0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. The response had HTTP status code 502.
所有解决方案都说要添加/设置标头,如您所见,我已经这样做了,但是当我在请求中包含参数时,我的应用程序仍然给我同样的错误。我应该怎么做?