使用CORS将API与LocomotiveJ进行REST API。在本地机器上工作,但在亚马逊或Heroku上不工作
我使用LocomotiveJS进行了REST API,现在我正在尝试启用CORS。我将以下代码添加到我的"所有"环境(config/vroments/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错误。
为了隔离问题,我开发了一个简单的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!
时,此代码有效你们对为什么它在我本地机器上工作而不在服务器上工作有任何意见?
我找到了一个解决方案:
现在我正在使用此连接中间件:https://github.com/troygoode/node-cors
然后,我只是更改了我的all.js文件,添加了以下行:
this.use(cors());
我将其部署在Heroku上,现在工作。