【问题标题】:headers.set doesn't set the Authorization headerheaders.set 没有设置 Authorization 标头
【发布时间】:2018-02-16 13:01:40
【问题描述】:

下面是取自this tutorial 的代码的sn-p,但由于我使用的是Angular 5,我将headers.append 更改为headers.set

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

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

【问题讨论】:

  • 您的服务器是否允许首先设置授权标头?从我所见,您的服务器很可能配置错误。或者您发送的令牌无效。
  • 代码错误 - 使用 Postman 时,它可以按预期工作

标签: ionic3 angular5


【解决方案1】:

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

在您的 sn-p 中,.set 调用的结果不会存储在任何地方。

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

【讨论】:

  • 谢谢。但是哇,当角度版本发生变化时,似乎有很多重大变化。网络上的教程,直到去年才被认为已经过时了。
  • 最好查看官方文档 :) 阅读文章或教程只是为了获得一些关于如何做的想法——但有时为了示例的简单性,代码已被弃用或质量不佳
  • 你也可以给 angular5 加上标签——因为它是特定于那个版本的
猜你喜欢
  • 2017-11-30
  • 1970-01-01
  • 2020-10-25
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多