【问题标题】:Check that AngularJS $resource Request Server Side in .NET MVC检查 .NET MVC 中的 AngularJS $resource 请求服务器端
【发布时间】:2013-09-30 19:52:22
【问题描述】:

有没有办法判断请求是否是 Angular (1.1.5) $resource 请求。我非常想为这种类型的请求寻找“Request.IsAjaxRequest()”方法。

我将其视为在覆盖的 AuthorizeAttribute 的 HandleUnauthorizedRequest 中,如果是 Ajax 或角度请求,我需要将上下文结果设置为某个 json,如果不是,则需要设置其他内容。

【问题讨论】:

  • 为什么不使用简单的系统令牌?或者你只是想区分 ajax 请求和经典 mvc 请求?
  • 只是想知道区别,以便我可以发回 json 或重定向到另一个 mvc 视图。
  • MVC方法Request.IsAjaxRequest没有用吗?
  • 不,因为它会检查不存在的“X-Requested-With”标头(请参阅 Thomas 的更新答案)

标签: asp.net-mvc-3 angularjs request


【解决方案1】:

我不太了解 MVC3,但您可以为来自 AngularJS 的所有请求设置自定义标头。

然后在服务器端,您只需要获取此标头并根据 Angular 的请求执行您想要的操作。

要在 AngularJS 中自定义标题,只需这样做:

angular.module('myModule', [])

    .config(['$httpProvider', function($httpProvider) {

        $httpProvider.defaults.headers.common["FROM-ANGULAR"] = "true";

    }])

要使用 X-Requested-With,您也必须这样做:

$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';

它不再默认设置,因为社区的很多部分必须删除此标头才能启用 CORS 请求

【讨论】:

  • 干杯,这很好用,虽然我最初希望那里已经有一个我可以检查的标题。你知道为什么它没有通过 X-Requested-With 发送吗?
  • 默认情况下现在没有之前是。 github.com/angular/angular.js/commit/…
  • 如果您使用 Yii 作为后端并且依赖于 isAjaxRequest 属性,这将特别有用。
  • 对于一般的 PHP 框架 isAjax 逻辑也很有用。 Phalcon 也有类似的功能。
猜你喜欢
  • 1970-01-01
  • 2014-09-03
  • 2017-03-08
  • 2019-06-01
  • 2014-02-22
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
相关资源
最近更新 更多