请求的资源node.js上没有Access-Control-Allow-Origin标头

时间:2014-03-06 16:37:57

标签: jquery node.js cors

尝试从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的内容,相同的起源政策,但现在我已经迷失了。

有人能帮帮我吗?

感谢。

2 个答案:

答案 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();
});