1

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 にデプロイすると機能しました。

ローカル マシンでは機能し、サーバーでは機能しなかった理由について何か意見はありますか?

4

1 に答える 1

3

私は解決策を見つけました:

今、私はこの接続ミドルウェアを使用しています: https://github.com/troygoode/node-cors

次に、次の行を追加して all.js ファイルを変更しました。

this.use(cors());

私はそれを Heroku にデプロイし、現在動作しています。

于 2014-02-08T20:42:39.247 に答える