使用CORS与LocomotiveJs Rest API。 适用于本地机器,但不适用于Amazon或Heroku

使用CORS与LocomotiveJs Rest API。 适用于本地机器,但不适用于Amazon或Heroku

我使用LocomotiveJs做了一个REST api,现在我正在试图启用CORS。 我将下面的代码添加到我的“所有”环境(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时,我得到一个404 Http错误,当客户端发送OPTIONS命令。

为了隔离问题,我开发了一个简单的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时起作用!

你们有什么意见,为什么它在我的本地机器上工作,并没有在服务器上工作?

我find一个解决scheme:

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

然后我只是改变了我的all.js文件添加以下行:

 this.use(cors()); 

我部署在Heroku上,现在就开始工作。