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

ref*_*tor 13 ajax asp.net-mvc angularjs

我正在使用ASP.NET MVC和AngularJS开发示例应用程序.

在服务器端代码中,我编写了一个Action过滤器属性,我需要检查请求是否是正常请求(浏览器)或AJAX请求.

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if ( filterContext.HttpContext.Request.IsAjaxRequest())
     {

     }
}
Run Code Online (Sandbox Code Playgroud)

在使用$ http Angular服务进行AJAX请求的情况下,上面的代码片段"IsAjaxRequest()"中提到的方法没有返回TRUE.

我发现请求没有X-Requested-With标头,甚至添加标头也没有解决请求.

注意:这不是CORS电话.

所以我的问题.

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

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

Mst*_*san 19

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

个人要求

$http.get('/controller/action', {
   headers: {
    'X-Requested-With': 'XMLHttpRequest'
   }
});
Run Code Online (Sandbox Code Playgroud)

对于每个请求

app.config(['$httpProvider', function ($httpProvider) {
  $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}]);
Run Code Online (Sandbox Code Playgroud)

你可以看到Angular缺少它的原因