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
'programing' 카테고리의 다른 글
동적으로 로드된 스크립트를 기다리는 중 (0) | 2023.10.25 |
---|---|
nodejs 로그 파일은 어디에 있습니까? (0) | 2023.10.25 |
row_number() 그룹화 기준? (0) | 2023.10.20 |
MySQL을 시작할 때 "스토리지 엔진으로 'InnoDB' 등록 실패" 오류가 발생합니다. (0) | 2023.10.20 |
WordPress의 custom wp_query 페이지에 페이지를 지정하면 404 오류 페이지가 발생합니다. (0) | 2023.10.20 |