bestsource

모든 요청에 대한 AngularJS $http 사용자 지정 헤더

bestsource 2023. 3. 15. 19:48
반응형

모든 요청에 대한 AngularJS $http 사용자 지정 헤더

커스텀 정보를 추가하여 $http 요청 헤더를 모두 설정할 수 있는 방법이 있는지 궁금합니다.config와 같은 것:

 var config = {headers: {
            'Authorization': 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==',
            'Accept': 'application/json;odata=verbose'
        }
    };

그러나 $http 콜은 모두 다른 서비스로 걸겠습니다.나는 해결책이 있다고 확신한다: D.감사해요.

작성할 수 있습니다.$httpinterceptor를 사용하여 헤더를 확장합니다.

myapp.factory('httpRequestInterceptor', function () {
  return {
    request: function (config) {

      config.headers['Authorization'] = 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==';
      config.headers['Accept'] = 'application/json;odata=verbose';

      return config;
    }
  };
});

myapp.config(function ($httpProvider) {
  $httpProvider.interceptors.push('httpRequestInterceptor');
});

보다 간단한 해결책은 Angular의run블록:

app.run(['$http', function ($http) {
    $http.defaults.headers.common['Authorization'] = 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==';
    $http.defaults.headers.common['Accept'] = 'application/json;odata=verbose';
}]);

주의: 이 솔루션에서는 다음 시간 이후 단 한 번만 정적 값을 전달할 수 있습니다.run블록은 1회만 실행됩니다.

  use the folllowing code and  you can also control  $http timeout from 
 config setting.    
 'use strict';
   var app = angular.module('b2capp', []);
   var apiRequestCount = 0;      
   app.config(function ($httpProvider) {
      $httpProvider.interceptors.push(function ($rootScope, $q) {
       return {
           request: function (config) {
               apiRequestCount++;
                //   config.timeout =300000;
              return config;
          },
          response: function (response) {
               return response;
          },
           responseError: function (rejection) {
             switch (rejection.status) {
                   case 408:
                        console.log('connection timed out');
                        break;
              }
               // return $q.reject(rejection);
               return rejection;
            }
          }
       })
    });
 }]);
   app.controller('myCtrl', function ($scope, $http, $timeout) {
    var headers = {
            //'Authorization': 'Basic ' + btoa(username + ":" + password),
               'Access-Control-Allow-Origin': true,
               'Content-Type': 'application/json; charset=utf-8',
               "X-Requested-With": "XMLHttpRequest"
                 }
    $http.post(url + 'Search_6e', reqCookie, {
                   headers
            })
            .then(function Success(response) {               
                 $scope.myData = resultData;
                 console.log($scope.myData);
           }, function myError(response) {
              //error code
    });

언급URL : https://stackoverflow.com/questions/29944997/angularjs-http-custom-header-for-all-requests

반응형