AngularJs routeProvider http状态403

Posted

技术标签:

【中文标题】AngularJs routeProvider http状态403【英文标题】:AngularJs routeProvider http status 403 【发布时间】:2014-09-22 09:30:46 【问题描述】:

我正在服务器端进行身份验证和授权。

在 angularJs 中,我正在使用这样的 routeProvider 进行路由。

$routeProvider.
        when('/', 
            templateUrl: 'partials/_home',
            controller: 'HomeCtrl'
        ).
        when('/home', 
            templateUrl: 'partials/_home',
            controller: 'HomeCtrl'
        ).
        when('/users', 
            templateUrl: 'partials/_users',
            controller: 'UserCtrl'
        ).
        when('/users/:id', 
            templateUrl: 'partials/_userForm',
            controller: 'UserCtrl'
        ).
        otherwise(
            redirectTo: '/'
        );

这是要解决的问题,当我得到一个 403 角度没有显示服务器页面时,它什么也不做。

有人对如何处理这个问题提出了建议吗?

【问题讨论】:

错误 403“禁止执行访问” – 尝试打开 URL /test/partials/_userForm – 你有什么回应?它与 AngularJS 没有任何共同之处,它是你的服务器。如果 403 发生,你对 Angular 有什么期望?重定向到某个登录页面? 是的,这是服务器响应,我想要的是显示那个 403 错误页面的内容。但是当出现该错误时,角度没有显示任何内容。 您要显示此模板或处理错误 403? 我的服务器提供的403错误页面。 我遇到了同样的错误,但我想展示模板,处理这种情况的最佳做法是什么? 【参考方案1】:

AngularJS 拦截器 - 更新到 v1.4.2

拦截器是通过将它们添加到 $httpProvider.interceptors 数组而向 $httpProvider 注册的服务工厂。工厂被调用并注入依赖项(如果指定)并返回拦截器。

阅读更多:$http angularjs Doc

部分配置(部分)

.config(function ($httpProvider) 
    $httpProvider.interceptors.push('responseObserver');
)

响应 - 观察者工厂

403.html500.html 是现有的 HTML 文件,样式很好,带有一些用户帮助内容。

.factory('responseObserver', function responseObserver($q, $window) 
    return 
        'responseError': function(errorResponse) 
            switch (errorResponse.status) 
            case 403:
                $window.location = './403.html';
                break;
            case 500:
                $window.location = './500.html';
                break;
            
            return $q.reject(errorResponse);
        
    ;
);

扩展有关拦截器的知识:http://djds4rce.wordpress.com/2013/08/13/understanding-angular-http-interceptors/

【讨论】:

很高兴听到这个消息,编码愉快 你不添加$window作为依赖吗?否则,它可以工作。 它就像一个魅力!我使用 $location 而不是 $window

以上是关于AngularJs routeProvider http状态403的主要内容,如果未能解决你的问题,请参考以下文章

AngularJs:使用 $routeProvider 调用控制器两次

AngularJs 使用 $routeProvider 的路由问题

AngularJs routeProvider http状态403

angularjs 报错Unknown provider: $routeProvider

AngularJS 的 $routeProvider templateUrl 总是使用 Express 返回 404

AngularJS - 为啥更改 url 地址时 $routeProvider 似乎不起作用并且我收到 404 错误