मुझे वास्तव में अवरोध करने के लिए $ httpProvider.interceptors प्राप्त नहीं हो रहा है। मैंने JSFiddle पर एक नमूना बनाया जो इंटरसेप्टर चलाने पर लॉग करता है और जब $ http प्रतिक्रिया सफल होती है। प्रतिक्रिया के बाद अनुरोध पहले से ही लौटाए जाने के बाद अनुरोध इंटरसेप्टर चलाया जाता है। यह थोड़ा पीछे की ओर लगता है।
मैं transformRequest का उपयोग नहीं कर सकता क्योंकि मुझे कॉन्फ़िगरेशन में पैराम को बदलने की आवश्यकता है। वह हिस्सा नमूना में नहीं दिखाया गया है।
मैं उपयोग कर रहा हूँ AngularJS 1.1.5
http://jsfiddle.net/skeemer/K7DCN/1/
जावास्क्रिप्ट
var myApp = angular.module('myApp', []);
myApp.factory('httpInterceptor', function ($q) {
return {
request: function (config) {
logIt('- Modify request');
return config || $q.when(config);
}
};
});
myApp.config(function ($httpProvider) {
$httpProvider.interceptors.push('httpInterceptor');
});
function MyCtrl($scope, $http) {
// Hit a server that allows cross domain XHR
$http.get('http://server.cors-api.appspot.com/server?id=8057313&enable=true&status=200&credentials=false')
.success(function (data) {
//logIt(data[0].request.url);
logIt('- GET Successful');
});
$scope.name = 'Superhero';
}
// Just the logging
var logs = document.getElementById('logs');
function logIt(msg) {
var e = document.createElement('div');
e.innerHTML = msg;
logs.insertBefore(e, logs.firstChild);
}
एचटीएमएल
<div ng-controller="MyCtrl">Hello, {{name}}!</div>
<br/>
<div id="logs"></div>
वाह ... अब गूंगा महसूस कर रहा हूँ। हालांकि धन्यवाद! मेरे दूसरे कोड में पता चला कि मैं $ httpProvider.interceptors के बजाय बहिष्कृत $ httpProvider.responseInterceptors का उपयोग कर रहा था। – skeemer