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电话.
所以我的问题.
filterContext.HttpContext.Request.IsAjaxRequest()如何决定请求是否为AJAX?
我可以检查请求标头(是否有特定标头)并确定请求是否是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缺少它的原因