【问题标题】:AngularJS: $http header default parameter not setting right [duplicate]AngularJS:$http标头默认参数未设置正确[重复]
【发布时间】:2016-06-21 17:00:42
【问题描述】:

我遇到了这个问题中描述的相同问题:Angularjs set a authorization header

我需要在我的请求标头中包含一个授权令牌。我已经尝试过使用几种方法 - 我尝试设置 $http 默认值如下:

app.config(function($httpProvider) {
    $httpProvider.defaults.headers.common['Authorization'] = '1234567';
});

还有这样的:

app.run(function($http) {
    $http.defaults.headers.common['Authorization'] = '1234567';
});

此外,我尝试在我的服务上的一个方法中像这样构造我的请求:

var request = {
    method: 'GET',
    url: 'my/api/endpoint',
    headers: {
        'Authorization': '1234567'
    }
};

$http(request).then(function(response) {
    console.log(response);
});

在所有这些情况下,我最终在请求标头中看到的内容如下所示:

Access-Control-Request-Method: GET
Origin: http://localhost:8000
Access-Control-Request-Headers: accept, authorization
Accept: */*
Referer: http://localhost:8000/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8

我希望在其中看到另一个键值对,例如:

Authorization: '1234567'

但是,我没有。

我使用的是 Angular 1.4.9 版,不知道这个问题是不是这个版本特有的?


已解决: 事实证明,这已在 Apache 配置服务器端解决。但是 - 值得注意的是,授权标头实际上包含在 preflight 请求标头中,而不是主请求中,这就是它似乎不在标头中的原因。

【问题讨论】:

    标签: javascript angularjs ajax cors


    【解决方案1】:

    我在Interceptor中做,它可以拦截所有请求并将Auth添加到header中。也许你可以试试。

    【讨论】:

    • 它最终成为服务器端的一个问题,但仍然赞成,因为这是一个很好的建议。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多