我想为每个请求发送一个api密钥:
function MyService($http) {
var req = {
method: 'GET',
url: 'https://api.giphy.com/v1/stickers/trending',
headers: {
'api_key':'123'
}
}
return $http(req);
}
但问题是所有请求都是OPTIONS(不是GET)并且没有发送api_key。这是发送标头的正确方法吗?感谢
编辑,因为它被标记为重复:
这不是CORS问题。我得到的错误是401.这意味着身份验证失败,因为端点没有收到带有 api_key 的请求标头。
答案 0 :(得分:0)
您所做的完全没问题,但如果api_key
始终不同,那么您必须动态提供api_key
值才能添加到请求中。
如果它始终相同,那么你有一个更好的方法:通过拦截器。你只会设置一次。同样,这种方法是,如果你必须设置一些总是相同的参数,所以实际上它是通过HTTP请求进行标准操作。
首先,你需要定义你的拦截器:
myApp.service('MyRequestsInterceptor', [function() {
this.request = function(config) {
config.headers.api_key = 'My Default API KEY';
return config;
};
}]);
然后只需将您的拦截器添加到AngularJS $httpProvided
:
myApp.config([ '$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('MyRequestsInterceptor');
} ]);