カスタム情報を追加してすべての$ httpリクエストヘッダーを設定する方法があるかどうか疑問に思っていました。 configのようなもの:
var config = {headers: {
'Authorization': 'Basic d2VudHdvcnRobWFuOkNoYW5nZV9tZQ==',
'Accept': 'application/json;odata=verbose'
}
};
しかし、すべての$ http呼び出しについて、さまざまなサービスで行います。私は解決策があると確信しています:D。ありがとう
$http
インターセプターを作成してヘッダーを拡張できます。
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回しか実行されないため、このソリューションでは静的値を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
});