使用CORS与LocomotiveJs一起使用Rest API。适用于本地计算机,但不适用于Amazon或Heroku

时间:2014-02-06 22:36:01

标签: node.js heroku express cors locomotivejs

使用CORS与LocomotiveJs一起使用Rest API。适用于本地计算机但不适用于Amazon或Heroku

我使用LocomotiveJs做了一个REST api,现在我正在尝试启用CORS。 我将以下代码添加到我的“all”环境(config / environments / all.js)。

this.use(function crossOrigin(req,res,next){
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With,Authentication");
    res.header("Access-Control-Allow-Methods","GET,POST,PUT,DELETE,OPTIONS");

    return next();
});

它适用于我的本地计算机但是当我将其部署到Heroku或AWS时,我在客户端发送OPTIONS命令时遇到了404 Http错误。

为了解决问题,我开发了一个简单的Express应用程序,其代码如下:

var express = require('express');
var app = express();

app.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With,Authentication");
  next();
 });

app.get('/test', function(req, res){
    res.set('Content-Type', 'application/json');
    res.send({ 'Hello' : 'World' });
});

var port = process.env.PORT || 5000;

app.listen(port);
console.log('Listening on port ' + port);

此代码在部署到Heroku时有效!

你们对于为什么它在我的本地机器上运行并且无法在服务器上运行有任何意见吗?

1 个答案:

答案 0 :(得分:3)

我找到了解决方案:

现在我正在使用这个连接中间件:https://github.com/troygoode/node-cors

然后我刚刚更改了我的all.js文件,添加了以下行:

this.use(cors());

我将它部署在Heroku上并立即开始工作。