0

クロスドメイン用に設定されたexpress.jsアプリケーションがあります

var allowedHost = {
  'http://localhost:3001': true,
  'http://localhost:7357': true
};

var allowCrossDomain = function(req, res, next) {
  if(allowedHost[req.headers.origin]) {
    res.header('Access-Control-Allow-Credentials', true);
    res.header('Access-Control-Allow-Origin', req.headers.origin)
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version');
    next();
  } else {
    res.send(403, {auth: false});
  }
}

私のクライアント(backbone.js)はクロスドメインも受け入れるように構成されており、この部分ではすべてが正常に機能しています。

今、私のexpress.jsアプリ(ポート3001で実行)内で、私は次のような単純なページにアクセスしようとしています:

app.get('/app', function(req, res, next){
  return res.render("" + __dirname + "/views/app", {
    title: 'hello world'
  });
});

たとえば、URL localhost:3001 / appを呼び出すと、req.headers.originが未定義であるため、403エラーが発生します。何か考えがありますか?

クロスドメインチェックに対処するために、通常のexpress.jsルートをどのように伝える必要がありますか?

この問題に関するどんな助けも本当にありがたいです;-)

4

1 に答える 1

-1

ヘッダーの設定にはresponse.setメソッドを使用し、ヘッダーの取得にはrequest.getメソッドを使用する必要があります。

CORSの例!!!

https://github.com/visionmedia/express/blob/master/examples/cors/index.js

于 2013-02-08T13:05:24.390 に答える