使用angularJS 1.6.3在请求标头中发送API密钥

时间:2017-08-12 19:16:30

标签: javascript angularjs cors angularjs-http

我想为每个请求发送一个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 的请求标头。

1 个答案:

答案 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');
} ]);