HttpClient Header无法附加授权

时间:2018-02-25 13:45:45

标签: cors ionic3 django-rest-auth angular4-httpclient

我试图通过在Http Header中附加一个Token来验证Django Rest API。我已经将服务器配置为允许跨源资源共享,并且能够使用旧版本的HTTP进行身份验证。 在我升级到最新的Ionic CLI(Ionic 3)并开始使用HttpClient模块后,问题就出现了。

以下是我的代码的一部分:

// get token data from storage
this.storage.get('auth').then((val) => {
this.headers = new Headers();
this.headers.append('Content-Type','application/x-www-form-urlencoded');
this.headers.append('Authorization', val);
console.log(this.headers.get('Authorization')) //displays: Token randomKey1244556etc 


//request
 this.http.get<any>("http://192.168.22.5/api-get-user", {headers: this.headers})
        .subscribe(data => {
            console.log(data);
        }, (err) => {
          console.log(err);
        });
    }, (err) => {
      this.flag = false;
    })

API返回以下错误: {&#34;详细信息&#34;:&#34;未提供身份验证凭据。&#34;}

以下是发送的网络请求和服务器响应的详细信息:

enter image description here

但是,使用PostMan时使用附加到HttpClient标头的相同凭据时,身份验证成功。

enter image description here

似乎标头未随请求一起发送,或者授权未附加到标头。知道如何解决问题吗?

注意:我也在使用CORS Google Chrome扩展程序。

1 个答案:

答案 0 :(得分:0)

正如预期的那样,标题有问题。我通过替换旧标头自定义请求标头来解决问题:

this.headers = new Headers();
this.headers.append('Content-Type','application/x-www-form-urlencoded');
this.headers.append('Authorization', val);

为:

const headers = new HttpHeaders().set('Authorization', val);

参考:Customizing Http Request Header