angular - POST 上的 Angular 6 HttpErrorResponse 状态为 200
问题描述
使用我的 Angular 6 客户端,我可以访问http://localhost:8082/login
以发送username
和password
返回令牌。这是错误
请注意,下面error:
有我想要的令牌。
这是我在 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()
了,但我有更多的错误。
解决方案
默认情况下,Angular HttpClient 尝试将 HTTP 响应的主体解析为 JSON。由于您收到的响应正文是纯文本,例如“Bearer .....”,而不是 JSON,因此 JSON 解析失败。
您需要告诉 HttpClient 期待纯文本响应,如下所示:
this.httpClient.post(this.apiURL + '/login', user, {headers:reqHeader, responseType: 'text'});
另请注意,由于响应是一个字符串,因此您不应该尝试将其强制转换为用户(不要这样做<User>
);传出消息是用户,返回值是一个字符串。
推荐阅读
- ios - 有没有办法在 SwiftUI 中创建下拉菜单/按钮?
- javascript - 我想从某个 j Query 选择器中删除包含某个值的
- jquery - 在模态的 div 内打开链接
- git - 如何修复白色 git bash 集成终端?
- javascript - 如何将 pug 模板引擎与 reactjs 一起使用
- java - 为什么我在 if 语句之外的返回值是 null?
- javascript - 避免在可重用组件中直接改变 prop
- java - 如何在 Java 中将播放的音频保存为 WAV 格式
- c - 在 Switch-Case 构造中使用“return”与“break”有什么好处?
- java - FXMLLoader 不从 JUnitTest 加载(相对路径问题)