怎么不总是通过" $ http.defaults.headers.common.Authorization"在运行功能?

时间:2017-01-06 20:21:08

标签: javascript angularjs

我不想在每个http请求中传递Bearer令牌,因此为了实现自动化,我执行了以下操作:

 angular.module('projectApp').run(function ($http, $rootScope, $location) {
        $http.defaults.headers.common.Authorization = 'Bearer ' + localStorage.getItem('token');
 }

但是当有一个页面不需要身份验证时,标题也会被传递。有一种方法可以选择不通过此标题(但默认情况下将其传递)?

2 个答案:

答案 0 :(得分:0)

您可以使用interceptors选择添加授权标头的请求,如下所示:

配置:

app.config([ '$httpProvider',   function($httpProvider) {
     $httpProvider.interceptors.push('APIInterceptor');
} ]);

服务:

app.service('APIInterceptor', [function() {
    var service = this;

    service.request = function(config) {
        config.headers.YOUR_HEADER= YOUR_HEADERS_VALUE;
        return config;
    };
}]);

答案 1 :(得分:0)

您可以将此标头设置为未定义的特定请求,如下所示:

$http.get('/someUrl', {headers: { 'Authorization ': undefined }}).then(successCallback, errorCallback);