79

ExpressでNodeJSを使用しています。通常のブラウザ リクエストと AJAX リクエストの違いをどのように見分けることができますか? リクエスト ヘッダーを確認できることはわかっていますが、Node/Exprsss はこの情報を公開していますか?

4

2 に答える 2

131

ほとんどのフレームワークはX-Requested-WithヘッダーをXMLHttpRequestに設定します。Express にはテストがあります。

app.get('/path', function(req, res) {
  var isAjaxRequest = req.xhr;
  ...
});
于 2013-04-11T09:44:38.280 に答える
50

が設定されていない場合、req.xhrたとえば Angularjs などのフレームワークで削除された場合、ヘッダーが JSON 応答 (または XML、または XHR が HTML ではなく応答として送信するもの) を受け入れることができるかどうかも確認する必要があります。

if (req.xhr || req.headers.accept.indexOf('json') > -1) {
  // send your xhr response here
} else {
  // send your normal response here
}

もちろん、ユースケースに合わせて2番目の部分を少し調整する必要がありますが、これはより完全な答えになるはずです.

理想的には、angular チームはそれを削除すべきではありませんでしたが、実際には CORS の飛行前の問題に対するより良い解決策を見つけたはずですが、それが今の残りの方法です...

于 2015-02-16T11:40:20.003 に答える