首页 > 解决方案 > POST 上的 Angular 6 HttpErrorResponse 状态为 200

问题描述

使用我的 Angular 6 客户端,我可以访问http://localhost:8082/login以发送usernamepassword返回令牌。这是错误在此处输入图像描述 请注意,下面error:有我想要的令牌。

这就是它在 Postman 上的样子 在此处输入图像描述

这是我在 Angular 上使用给定用户名和密码获取令牌的函数

validateUser(user:User){


    var reqHeader = new HttpHeaders({ 'Content-Type': 'application/json','No-Auth':'True' });



    return this.httpClient.post<User>(this.apiURL + '/login',user,{headers:reqHeader});
  }

我只想返回令牌,就像在 Postman 中一样。我试过toPromise()了,但我有更多的错误。

标签: angularapipost

解决方案


默认情况下,Angular HttpClient 尝试将 HTTP 响应的主体解析为 JSON。由于您收到的响应正文是纯文本,例如“Bearer .....”,而不是 JSON,因此 JSON 解析失败。

您需要告诉 HttpClient 期待纯文本响应,如下所示:

this.httpClient.post(this.apiURL + '/login', user, {headers:reqHeader, responseType: 'text'});

另请注意,由于响应是一个字符串,因此您不应该尝试将其强制转换为用户(不要这样做<User>);传出消息是用户,返回值是一个字符串。


推荐阅读