Я пытаюсь получить данные из удаленного веб-сервиса с помощью своего углового приложения. Поскольку сервер использует WSi2 api manager для обработки запросов, мне нужно передать "Авторизация: Bearer 31363a37a017a4b2e9b1104981ff" вместе с запросами.
Мой запрос выглядит следующим образом
movieControllers.controller('MovieListCtrl', ['$scope', '$http',
function($scope, $http) {
$http.jsonp('http:myserverurl/1.0.0'
,{
headers: {Authorization: 'Bearer AUTH_CODE_HERE'}
}).success(function(data, status, headers, config) {
$scope.movies= data;
$scope.status = status;
}).error(function(error, status, headers, config) {
$scope.status = status;
});
}]);
Но это дает мне "несанкционированный доступ". Кажется, что заголовок установлен неправильно. Затем я направил запрос на свою апи. Это не требовало разрешения. И это нормально.
Я новичок в угловой и этой API-интерфейсе и веб-сервисе. Нужно ли устанавливать дополнительный модуль для Oauth? (Я предполагаю, что эта авторизация - это oauth. Исправьте меня, если я ошибаюсь). может кто-нибудь указать мне в правильном направлении, и это очень ценится. Благодарю.
Я бы также рекомендовал создать перехватчик, потому что здесь используется перехватчик.
Все, что вам нужно сделать, это упомянуть перехватчик в $ httpProvider
var myApp = angular.module('myApp');
//Set configs
myApp.config(function($httpProvider){
//Add dependencyof interceptor
$httpProvider.interceptors.push( 'myInterceptor');
});
Теперь создайте перехватчик на заводе
//Create you interceptor here
mayApp.factory('myInterceptor', function() {
return {
request: function(config) {
config.headers[ 'Authorization' ] = 'Bearer AUTH_CODE_HERE';
return config;
}
}
});
Таким образом, вы решаете добавить заголовок авторизации в каждом запросе. Этот перехватчик также будет полезен, если вы хотите изменить конфигурацию или хотите динамически генерировать заголовок авторизации для каждого запроса. Надеюсь, это поможет вам. Ура!
Перед $http.jsonp
если вы назначили авторизацию. это будет работать
$http.defaults.headers.common. Authorization = 'Bearer AUTH_CODE_HERE'
В этом случае ваш код должен быть -
movieControllers.controller('MovieListCtrl', ['$scope', '$http',
function($scope, $http) {
$http.defaults.headers.common. Authorization = 'Bearer AUTH_CODE_HERE';
$http.jsonp('http:myserverurl/1.0.0')
.success(function(data, status, headers, config) {
$scope.movies= data;
$scope.status = status;
}).error(function(error, status, headers, config) {
$scope.status = status;
});
}]);