【问题标题】:Identify angular js AJAX calls in ASP.NET MVC code识别 ASP.NET MVC 代码中的 Angular js AJAX 调用
【发布时间】:2016-01-13 22:05:52
【问题描述】:

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

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

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

     }
}

如果使用 $http Angular 服务发出 AJAX 请求,上述代码 sn-p "IsAjaxRequest()" 中提到的方法不会返回 TRUE。

我观察到请求没有 X-Requested-With header ,即使添加 header 也没有解决请求。

注意:这不是 CORS 调用。

所以我的问题。

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

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

【问题讨论】:

标签: ajax angularjs asp.net-mvc


【解决方案1】:

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

个人要求

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

对于每个请求

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

你可以从Angular中看到为什么它不见了

【讨论】:

  • 事实上我确实添加了建议的标题,但问题在于 header 的值,而不是 "XMLHttpRequest" 它是 "true" ,天知道我为什么给出这个值:)。提供的链接也很有帮助。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多