angular - 无法使用 API 400 错误请求进行身份验证
问题描述
我正在尝试使用 API 对用户进行身份验证。我已经实现了登录功能的方法
login() {
this.key = this.credentials.username + ":" + this.credentials.password;
this.base64 = btoa(this.key) //base64
this.url = encodeURI(this.base64); //url
this.contentHeader = new HttpHeaders().set("Authorization", "Basic " + this.url);
return new Promise((resolve, reject) => {
console.log(this.contentHeader)
this.http.post(this.LOGIN_URL, null, { headers: this.contentHeader })
.subscribe(res => {
resolve(res);
console.log("success:" + res)
res => this.authSuccess(res.id_token)
}, (err) => {
console.log("rejected");
reject(err);
});
});
}
我正在尝试连接用户名和密码,然后编码为 base64。再次将其编码为 URL 并与标头组合发布。我正在正确地通过邮递员进行身份验证。但在 ionic 应用程序中,它表示请求错误。
解决方案
当您使用 HTTP 或 HTTPClient 发送 POST 请求时,第二个参数作为 POST 正文发送。在您的代码中,您似乎不是将 Authorization 作为标题发送,而是作为 POST 正文发送。
将其更改为:
this.http.post(this.LOGIN_URL, null, {
headers: HttpHeaders().set("Authorization", "Basic " + this.url)
})
推荐阅读
- python - 获取从其他数据框中查找的最新值
- swift - swift 5.1 将图像从 UIImagePickerController 添加到添加到 UICollectionView 的数组中
- java - 如何使用 Java 中的事件侦听器和小部件查看器增加数字?
- android - 将底页保留在 masterDetailPage Xamarin 中任何页面的顶部
- javascript - 无法拆分、映射和加入?
- vue.js - 让网络服务器像 Vue 开发服务器一样处理页面刷新/书签
- spring-data-rest - 在 SDR 投影中使用服务
- javascript - 如何在 React 的组件之间执行作为 props 传递的函数?
- flutter - Flutter 如何将大型有状态小部件重构为较小的小部件
- android - Android测试sql数据库中的表