我以前在基本控制器上创建了一个方法:
public bool IsJsonRequest() { var acceptTypes = Request.AcceptTypes; return acceptTypes != null && acceptTypes.Any(a => a.Equals("application/json", StringComparison.OrdinalIgnoreCase)); }
然后我偶然发现AjaxRequestExtensions.IsAjaxRequest()。它的文档非常模糊:
AjaxRequestExtensions.IsAjaxRequest()
如果指定的HTTP请求是AJAX请求,则为true;否则为true。否则为假。
这让我开始思考,使它成为AJAX的HTTP请求又是什么呢?除了检查请求者接受的内容类型之外,还有其他用途吗?或者编码不是成为“ AJAX”的必要条件吗?
(请注意,在我的情况下,只能从网站上的JS页面调用我的操作,而JSON是唯一必需的编码。)
它检查X-Requested- With(HTTP_X_REQUESTED_WITH)标头是否设置为XMLHttpRequest。发出AJAX请求时,此标头由jQuery和许多其他JavaScript框架设置。
X-Requested- With