使用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上,现在就开始工作。