【发布时间】:2015-09-30 00:51:31
【问题描述】:
我想传入对 api 进行 REST 调用所需的用户名和密码组合。
Controller.js
var app = angular.module('myApp', []);
//The service to put the interceptor configuration on (not on all $http method calls)
app.factory('getCallsApi', ['$http', function($http) {
return {
get: function(callback) {
$http.get(/* REST URI */).success(function(data) {
callback(data);
});
}
}
}]);
var Interceptor = function($q) {
return {
request: function(config) {
//TODO: Pass in username and password (hardcoded) to get through authentication
},
requestError: function(rejection) {
},
response: function(config) {
//TODO: ADD Cross origin headers
},
responseError: function(rejection) {
}
}
}
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(Interceptor);
}]);
myApp.controller('appController', ['$scope','getCallsApi', function($scope, getCallsApi) {
getCallsApi.get(function(data) {
console.log(data);
});
}]);
我目前在控制台中收到两个错误。首先是未授权访问的 401 状态和有关在请求的资源上找不到跨源标头的错误。我不能自己将 X 源头放在请求的资源上,因为我无权编辑 API 的响应。
【问题讨论】:
-
如果您要查询的服务器不允许跨源,并且您无法控制服务器添加标头,那么 那个人 i> 控制服务器需要为你做这件事。没有办法绕过此安全功能。
-
是的,我知道拦截响应并添加标头是一个很长的过程。但无论如何,我如何通过服务调用的请求拦截器通过 401?
标签: javascript angularjs rest angular-services angular-http-interceptors