如果所有服务器都响应 OPTIONS 请求,这不会有问题,但 Satellizer 甚至会导致 Angular 使用 Content-Type text/plain 预先发送 GET 请求。实际上,它破坏了我的其他 REST 查询的一半。
问问题
1202 次
2 回答
1
在查看了代码并研究了 Angualr 的 httpProvider 之后,我意识到 Sateliizer 正在使用 httpProvider 的拦截器数组拦截每个请求并添加以下内容:
var token = localStorage.getItem(tokenName);
if (token && config.httpInterceptor) {
token = config.authHeader === 'Authorization' ? 'Bearer ' + token : token;
httpConfig.headers[config.authHeader] = token;
}
这样每个请求都会获得一个 Authorization 标头。由于我实际上只有一个需要授权标头的请求,因此我修改了条件语句:
if (token && config.httpInterceptor && httpConfig.auth===true) {
然后在我的 $http.get 中为实际需要授权的单一服务添加:
var config = {auth: true};
$http.get(googleUrl, config)
于 2015-03-10T19:08:15.363 回答
1
我使用satellizer
库来管理授权。由于我还对第三方 API 进行 REST 调用,因此我不想包含Authorization
标头。添加skipAuthorization:true
配置块解决了我的问题。例如:
(function () {
'use strict';
angular.module('weather')
.factory('weatherResource', ['$http', function ($http) {
return $http({
method: 'GET',
url: 'http://api.openweathermap.org/data/2.5/weather?q=Bangalore&appid=a50e83454ba54b9',
skipAuthorization: true
});
}]);
})();
祝你好运。
于 2015-10-18T06:40:24.213 回答