识别 ASP.NET MVC 代码中的 Angular js AJAX 调用
Posted
技术标签:
【中文标题】识别 ASP.NET MVC 代码中的 Angular js AJAX 调用【英文标题】:Identify angular js AJAX calls in ASP.NET MVC code 【发布时间】: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 调用。
所以我的问题。
filterContext.HttpContext.Request.IsAjaxRequest()如何判断请求是否为AJAX?
我可以检查请求标头(是否有特定标头)并确定请求是否为 AJAX。这是正确且唯一的方法吗?
【问题讨论】:
仅供参考,它是开源的,您可以查看实际实现:aspnetwebstack.codeplex.com/SourceControl/latest#src/… @Keith Rousseau 提供的链接将来应该对我有所帮助.. 【参考方案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" ,天知道我为什么给出这个值:)。提供的链接也很有帮助。谢谢。以上是关于识别 ASP.NET MVC 代码中的 Angular js AJAX 调用的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 3 无法识别 .cshtml 视图文件
ASP.NET MVC 验证器无法识别引导程序 DatePicker 格式