跨域CORS支持express.js应用程序

时间:2013-01-10 08:28:14

标签: node.js express cors

我有一个带有跨域设置的express.js应用程序

var allowedHost = {
  'http://localhost:3001': true,
  'http://localhost:7357': true
};

var allowCrossDomain = function(req, res, next) {
  if(allowedHost[req.headers.origin]) {
    res.header('Access-Control-Allow-Credentials', true);
    res.header('Access-Control-Allow-Origin', req.headers.origin)
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version');
    next();
  } else {
    res.send(403, {auth: false});
  }
}

我的客户端(backbone.js)也被配置为接受跨域,并且这部分的一切正常。

现在,在我的express.js应用程序内部(在端口3001上运行)我正试图访问这样的简单页面:

app.get('/app', function(req, res, next){
  return res.render("" + __dirname + "/views/app", {
    title: 'hello world'
  });
});

如果我调用url localhost:3001 / app例如我有403错误,因为req.headers.origin未定义,你有什么想法吗?

我应该如何告诉我的普通express.js路由以应对跨域检查?

我们非常感谢您对此问题的任何帮助; - )

1 个答案:

答案 0 :(得分:-1)

您应该使用 response.set 方法设置标头,并使用 request.get 方法检索标头。

关于CORS的一个例子!!!

https://github.com/visionmedia/express/blob/master/examples/cors/index.js