尝试从ajax请求与node.js服务器通信时遇到问题。
我已经像这样配置了我的服务器:
var allowCrossDomain = function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
};
app.use(allowCrossDomain);
执行我的请求时出现此错误:
XMLHttpRequest cannot load http://10.192.122.180:8181/meters. No 'Access-Control-Allow- Origin' header is present on the requested resource. Origin 'http://localhost:6161' is therefore not allowed access.
当我在浏览器中键入URL时,它可以工作。我已经阅读了很多关于CORS的内容,相同的起源政策,但现在我已经迷失了。
有人能帮帮我吗?
感谢。
答案 0 :(得分:0)
我的猜测是,在您的中间件(allowCrossDomain
)有机会运行之前,您正在为该页面提供服务。
如果您使用 Express 3 ,请尝试以下操作:
app.use(allowCrossDomain);
app.use(app.router);
如果您使用 Express 4 ,请确保您的app.use(allowCrossDomain)
电话在其他路线之前(app.get
等)。
答案 1 :(得分:0)
要解决此问题,请在server.js中使用以下代码
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization');
next();
});