以前、ベース コントローラーにメソッドを作成しました。
public bool IsJsonRequest()
{
var acceptTypes = Request.AcceptTypes;
return acceptTypes != null &&
acceptTypes.Any(a => a.Equals("application/json",
StringComparison.OrdinalIgnoreCase));
}
そして私は偶然に出会ったAjaxRequestExtensions.IsAjaxRequest()
。そのドキュメントは非常に曖昧である:
指定された HTTP リクエストが AJAX リクエストの場合は true、それ以外の場合は false。
これを見て、HTTP リクエストが AJAX になる理由は何でしょうか? リクエスト元の受け入れ可能なコンテンツ タイプを確認する以外に何かあるのでしょうか、それともエンコードは「AJAX」の要件ではないのでしょうか?
(私の場合、アクションはサイト上の JS ページからのみ呼び出される必要があり、必要なエンコードは JSON のみであることに注意してください。)
ベストアンサー1
XMLHttpRequest に設定されている (HTTP_X_REQUESTED_WITH) ヘッダーをチェックしますX-Requested-With
。このヘッダーは、AJAX リクエストを行うときに jQuery やその他の多くの JavaScript フレームワークによって設定されます。