AngularJS在$ http.get

时间:2017-07-14 11:41:10

标签: javascript angularjs httprequest

我试图添加'授权'包含用于将来HTTP请求的令牌的标头。检索令牌似乎没有问题,但是在发出get请求时,它会因未经授权的错误消息而失败。检查请求标头后,请求块中不存在授权标头...



window.crUtil = /*window.crUtil ||*/ (function() {

    // Angular Services
    var $injector = angular.injector(['ng']);
    var $http = $injector.get('$http');


    // getting the CFF data
    function get_data() {
    		getJWTAWS();
        var url = '/AWS/getDATA/555';
				console.log('AUTH header before call: ' + $http.defaults.headers.common.Authorization);
        $http.get(url,httpHeader).then(function successCallback(response) {
            var data = response.data;
            var cff = initCff();
            alert(data.itemId);
            
        }, function errorCallback(response) {
            initCff();
            alert("Error while getting data ");
        });

    }
		
    function getJWTAWS() {
        var httpConfig = {
            cache: true, 
            params: {}
        };

        $http.get('/AWS/token', httpConfig).then(
            function(response) {
                if (response.data.accessToken) {
                    // add jwt token to auth header for all requests made by the $http service

                    $http.defaults.headers.common.Authorization = response.data.tokenType + ' ' + response.data.accessToken;
                }
            },
            function(error) {
                alert('jwt token could not be retrieved.');
            }
        );
    }


})();

var result = util.get_data();
console.log ('called search function ' + result);




函数getToken()返回一个值但是因为我在该主题上是新的,我不太确定将标记添加到标题的方式是否合适。 您能告诉我们在请求中包含标题的正确方法吗?我也尝试将它添加到get请求中 $ http.get(URL,httpHeaders)... 但它也没有用。

2 个答案:

答案 0 :(得分:2)

我不确定我完全理解你的问题,因为你没有提供所谓的

  

httpConfig

如果您正在努力声明标头,请尝试按以下方式发出获取请求:

$http({
  method: 'GET',
  url: YOUR_URL,
  headers: {
    'Content-Type': 'application/json',
    'Authorization': AUTH_STRING_HERE
  }
}).then(function (response) { ... });

您可以在标题对象中添加您喜欢的任何标题。

答案 1 :(得分:0)

尝试在配置块中添加此功能,并在您的rootscope中设置令牌

$httpProvider.interceptors.push({
    request: function (config) {
        config.headers.Authorization = $rootScope.token;
        return config;
    }
})