我以前在我的基本控制器上创建了一个方法:
public bool IsJsonRequest() { var acceptTypes = Request.AcceptTypes; return acceptTypes != null && acceptTypes.Any(a => a.Equals("application/json",StringComparison.OrdinalIgnoreCase)); }
然后我偶然发现了AjaxRequestExtensions.IsAjaxRequest(). documentation for it is very vague:
true if the specified HTTP request is an AJAX request; otherwise,false.
这让我想到,它使得它成为AJAX的HTTP请求是什么?除了检查请求者接受的内容类型,还是编码不是“AJAX”的要求之外,还有更多内容吗?
解决方法
它检查X-Requested-With(HTTP_X_REQUESTED_WITH)标头是否设置为XMLHttpRequest.在生成AJAX请求时,此标头由jQuery和许多其他javascript框架设置.