Dre*_*kes 23 .net ajax asp.net-mvc asp.net-mvc-3
我以前在我的基本控制器上创建了一个方法:
public bool IsJsonRequest()
{
var acceptTypes = Request.AcceptTypes;
return acceptTypes != null &&
acceptTypes.Any(a => a.Equals("application/json",
StringComparison.OrdinalIgnoreCase));
}
Run Code Online (Sandbox Code Playgroud)
然后我偶然发现了AjaxRequestExtensions.IsAjaxRequest()
.它的文档非常模糊:
如果指定的HTTP请求是AJAX请求,则为true;否则为false.否则,错误.
这让我想到了,它使得它成为AJAX的HTTP请求是什么?它是否比检查请求者接受的内容类型还要多,或者编码不是"AJAX"的要求?
(请注意,在我的情况下,我的操作只能从我网站上的JS页面调用,而JSON是唯一必需的编码.)
tva*_*son 32
它检查X-Requested-With
设置为XMLHttpRequest 的(HTTP_X_REQUESTED_WITH)标头.在生成AJAX请求时,此标头由jQuery和许多其他javascript框架设置.
具体来说,IsAjaxRequest
代码可以细分为函数:
public static bool IsAjaxRequest(this HttpRequestBase request)
{
if (request == null)
{
throw new ArgumentNullException("request");
}
return (request["X-Requested-With"] == "XMLHttpRequest") || ((request.Headers != null) && (request.Headers["X-Requested-With"] == "XMLHttpRequest"));
}
Run Code Online (Sandbox Code Playgroud)
编辑 - 2019年11月21日
我回到我的回答,发现我的链接IsAjaxRequest
现在已经破了.我用当前链接更新了它,但这是AspNetWebStack repo,因此,不是代码的MVC v3版本.也就是说,在查看时,代码仍然与我在下面写的相同.
归档时间: |
|
查看次数: |
8785 次 |
最近记录: |