ASP.NETMVC-IsAjaxRequest()实际上是什么意思?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (171)

我以前在基本控制器上创建了一个方法:

public bool IsJsonRequest()
{
    var acceptTypes = Request.AcceptTypes;
    return acceptTypes != null && 
           acceptTypes.Any(a => a.Equals("application/json",
                                         StringComparison.OrdinalIgnoreCase));
}

然后我偶然发现AjaxRequestExtensions.IsAjaxRequest()。它的文档非常模糊

如果指定的HTTP请求是AJAX请求,则为true; 否则,是错误的。

这让我想到了一个HTTP请求使它成为AJAX的原因是什么?除了检查请求者接受的内容类型还是编码不是“AJAX”的要求,还有更多吗?

(请注意,在我的情况下,我的操作只能从我网站上的JS页面调用,而JSON是唯一必需的编码。)

提问于
用户回答回答于

它检查X-Requested-With(HTTP_X_REQUESTED_WITH)头设置为XMLHttpRequest。这个头文件是由jQuery和其他一些javascript框架在进行AJAX请求时设置的。

用户回答回答于

具体来说,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"));
}

扫码关注云+社区

领取腾讯云代金券