headers.set不设置Authorization标头

时间:2018-02-14 18:37:39

标签: ionic3 angular5

以下是从this tutorial获取的代码片段,但由于我使用的是Angular 5,因此我将headers.append更改为headers.set

但是,我仍会收到401 Unauthorized错误,基本上我说我无法使用JWT授权登录。我尝试使用POSTMAN发送收到的令牌并设置Authorization标头没有任何问题,但我的服务器将始终拒绝我的代码。

getTodos(){

    return new Promise((resolve, reject) => {

      let headers = new HttpHeaders();
      headers.set('Authorization', this.authService.token);

      this.http.get('http://localhost:8080/api/todos', {headers: headers})
        .subscribe(data => {
          console.log("ok getTodos");
          resolve(data);
        }, (err) => {
          console.log("NO getTodos");
          console.log("err",err);
          reject(err);
        });
    });
  }

1 个答案:

答案 0 :(得分:2)

Immutable set of Http headers, with lazy parsing. https://angular.io/api/common/http/HttpHeaders

试试这个

import { HttpHeaders } from '@angular/common/http';

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
    'Authorization': 'my-auth-token'
  })
};

.set将返回HttpHeaders httpOptions.headers = httpOptions.headers.set('Authorization', 'my-new-auth-token');

在您的代码段中,.set来电的结果不会存储在任何地方。

编辑:如果您需要进一步的帮助或解释什么是不可变的,请告诉我。有用的网址https://angular.io/guide/http#update-headers - 查看官方文档总是好的。