programing

angular.js $http 개체가 X-Requested-With 헤더를 보내지 못하도록 하는 방법은 무엇입니까?

padding 2023. 10. 25. 23:07
반응형

angular.js $http 개체가 X-Requested-With 헤더를 보내지 못하도록 하는 방법은 무엇입니까?

Angular.js는 $http 개체를 사용하여 웹 서비스에 액세스할 때 자동으로 요청에 X-Requested-With:XMLHttpRequest 헤더를 추가합니다.

CORS를 사용하여 접속하는 웹 서비스가 X-Requested-With 헤더를 지원하지 않아 제거하려고 했지만 $httpProvider 객체에 접속할 수 없습니다.정의되지 않은 개체 오류가 발생하고 컨트롤러 매개 변수에서 이를 참조하여 각도를 주입하면 "Error: Unknown provider: $httpProvider: $httpProvider <- $httpProvider>"라는 메시지가 표시됩니다.

문서(http://docs.angularjs.org/api/ng.$http) 에 나와 있는 $httpProvider에 액세스하여 angular.js에서 해당 헤더를 전송하지 않도록 하려면 어떻게 해야 하는지 궁금합니다.

angular.module('myModule', [])
    .config(['$httpProvider', function($httpProvider) {
        delete $httpProvider.defaults.headers.common["X-Requested-With"]
    }])

저는 Justen answer 외에도 다음과 같이 요청 단위로 할 수 있다는 것을 알았습니다.

delete $http.defaults.headers.common['X-Requested-With']

Angular JS 버전 1.1.1 이후로 헤더를 제거할 필요가 없습니다.

변경 로그 참조:
https://github.com/angular/angular.js/blob/master/CHANGELOG.md#111-pathological-kerning-2012-11-26

나처럼 axis 요청을 식별하고 다르게 응답하기 위해 헤더를 사용하던 사람들을 위해.

예: 세션이 만료된 후 요청하기.

다음과 같이 헤더를 다시 활성화할 수 있습니다.

angular.module('yourModule', [])
.config(['$httpProvider', function($httpProvider) {
    $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
}]);

Angular JS 버전 1.1.1 이후로 헤더를 제거할 필요가 없습니다.이 변경 사항은 https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#Protecting_REST_Services:_Use_of_Custom_Request_Headers 에서 언급되었습니다.

Josue에서 알 수 있듯이, 다음과 같이 모든 요청에 쉽게 추가할 수 있습니다.

angular.module('yourModule', [])
    .config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';
    }]);

특정 외부 요청에 대한 헤더를 제거하려면 헤더에 대한 구성을 미정의 상태로 설정합니다.

let urlExternalValidator = 'https://openiban.com/validate/' + this.iban + '?getBIC=true&validateBankCode=true';
this.$http.get(urlExternalValidator, {
    // simple request to not trigger a CORS preflight
    // https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
    headers: {
        'X-Requested-With': undefined
    }
})

또한 $http(config)를 호출할 때 전달되는 config 개체의 헤더 속성을 제공할 수 있습니다. 이 속성은 기본값을 전역적으로 변경하지 않고 재정의합니다.

$httpProvider.defaults를 통해 자동으로 추가된 헤더를 명시적으로 제거합니다.요청별로 헤더, 헤더 속성 사용, 원하는 헤더를 정의되지 않음으로 설정

https://docs.angularjs.org/api/ng/service/$http#setting-http-headers

언급URL : https://stackoverflow.com/questions/12312659/how-to-prevent-angular-js-http-object-from-sending-x-requested-with-header

반응형