headers.set 未设置授权 header

headers.set doesn't set the Authorization header

下面是摘自 this tutorial 的代码片段,但由于我使用的是 Angular 5,所以我将 headers.append 更改为 headers.set

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

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);
        });
    });
  }

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 将 return HttpHeaders httpOptions.headers = httpOptions.headers.set('Authorization', 'my-new-auth-token');

在您的代码段中,.set 调用的结果未存储在任何地方。

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