使用 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 时,当客户端发送 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 时有效!
你们对为什么它在我的本地计算机上运行但在服务器上不起作用有什么看法吗?
最佳答案
我找到了解决方案:
现在我正在使用这个连接中间件:https://github.com/troygoode/node-cors
然后我刚刚更改了 all.js 文件,添加了以下行:
this.use(cors());
我将其部署在 Heroku 上并且现在可以工作。
关于node.js - 使用 CORS 的 LocomotiveJs 的 Rest API。适用于本地计算机,但不适用于 Amazon 或 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21615578/