web-dev-qa-db-ja.com

Expressを使用したNodeJSでのAJAXリクエストの検出

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

69
michael

ほとんどのフレームワークはX-Requested-WithヘッダーのXMLHttpRequest(Expressにはテストがあります):

app.get('/path', function(req, res) {
  var isAjaxRequest = req.xhr;
  ...
});
118
robertklep

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の飛行前の問題に対するより良い解決策を見つけたはずですが、それがその方法です今すぐ休む...

43
kumarharsh