我正在使用ASP.NETMVC和AngularJS开发一个示例应用程序
在服务器端代码中,我编写了一个actionfilter属性,其中我需要检查请求是普通请求(浏览器)还是AJAX请求
公共覆盖无效OnActionExecuting(ActionExecutingContext筛选器Context)
{
if(filterContext.HttpContext.Request.IsAjaxRequest())
{
}
}
如果使用$http服务发出AJAX请求,上述代码片段“IsAjaxRequest()”中提到的方法不会返回TRUE
我观察到该请求没有X-request-With头,甚至添加头也不能解决该请求
注意:这不是CORS呼叫
所以我的问题是
-
filterContext.HttpContext.Request.IsAjaxRequest()如何决定请求是否为AJAX
-
我可以检查请求头(是否有特定的头)并决定请求是否是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”;
}]);
你可以看到为什么从角度上看它不见了