【问题标题】:AngularJS Adding a header to the $http.getAngularJS 向 $http.get 添加标头
【发布时间】:2017-12-19 12:05:28
【问题描述】:

我正在尝试为未来的 HTTP 请求添加包含令牌的“授权”标头。检索令牌似乎很好,但是在发出获取请求时它会失败并显示未经授权的错误消息。检查请求标头后,请求块中不存在授权标头...

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)... 但它也没有用。

【问题讨论】:

    标签: javascript angularjs httprequest


    【解决方案1】:

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

    http配置

    如果您难以声明标头,请尝试像这样发出 get 请求:

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

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

    【讨论】:

      【解决方案2】:

      尝试在您的配置块中添加它并在您的 rootscope 中设置令牌

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-18
        • 2014-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-09
        相关资源
        最近更新 更多