在ASP.NET MVC代码中识别AJAX调用

我正在使用ASP.NETMVC和AngularJS开发一个示例应用程序

在服务器端代码中,我编写了一个actionfilter属性,其中我需要检查请求是普通请求(浏览器)还是AJAX请求

公共覆盖无效OnActionExecuting(ActionExecutingContext筛选器Context)
{
if(filterContext.HttpContext.Request.IsAjaxRequest())
{
}
}

如果使用$http服务发出AJAX请求,上述代码片段“IsAjaxRequest()”中提到的方法不会返回TRUE

我观察到该请求没有X-request-With头,甚至添加头也不能解决该请求

注意:这不是CORS呼叫

所以我的问题是

  1. filterContext.HttpContext.Request.IsAjaxRequest()如何决定请求是否为AJAX

  2. 我可以检查请求头(是否有特定的头)并决定请求是否是AJAX。这是正确且唯一的方法吗

它通过查看X-request-With头是否存在来决定。
您可以将X-Request-With头手动添加到$http服务中

个人请求

$http.get(“/controller/action”{
标题:{
“X-request-With':“XMLHttpRequest”
}
});

每一个要求

app.config(['$httpProvider',函数($httpProvider){
$httpProvider.defaults.headers.common[“X-request-With”]=“XMLHttpRequest”;
}]);

你可以看到为什么从角度上看它不见了

发表评论