如何解决如何从HTTP标头请求中获取set-cookie并将其发送到另一个API angular
在我的角度项目中,我有一个基本的登录页面,用户在其中输入他们的电子邮件和密码,并在提交时将电子邮件和密码发送到服务器,并收到包含setcookie的响应,该响应必须在下一页中使用,是双重身份验证。 我想在另一个API调用中使用该cookie(用于双重身份验证),但是我不知道如何。
这是我的userLogin
API调用:
userLogin(formdata: Login ): Observable<any> {
return this.http.post
(this.ServerUrl + 'Account/login',formdata,{ headers: new HttpHeaders({'accept': 'text/plain','Content-Type': 'application/json','Authorization': 'Bearer ' + this.token,}),observe: 'response',withCredentials: true });
}
这是我从服务器获得的响应cookie: Cookies
这是我的user2fa
API调用:
user2Fa(formdata: Factor ): Observable<any> {
return this.http.post
(this.ServerUrl + 'Account/twoFactorLogin',withCredentials: true });
}
解决方法
您无法从Angular代码访问cookie,是吗?过去我曾遇到过类似的问题,但是我不需要对代码进行任何更改。我必须进行一些特定于环境的更改。
我不知道您使用的确切环境,但是以下几点可能会帮助您找到解决方案:
- 登录REST API调用和后续的REST API调用(如果它们是在同一个服务器/ URL域中进行的),则cookie应与浏览器在后续请求中的请求一起自动发送。
- 从登录REST API的响应中检查响应的标题标签。 set-cookie条目是否具有名为“ HttpOnly”的属性?如果是这种情况,我怀疑是否可以通过javascript代码访问cookie。
- 如果没有2是否适用,您的Angular应用程序是否在HTTP上运行,而REST API是否在HTTPS上运行?如果是这样,除非您的Angular应用程序在HTTPS上运行,否则您的浏览器将不会在后续请求中发回接收到的cookie。在这种情况下,您可能需要使用自签名证书才能在本地主机上的HTTPS上运行Angular应用程序进行测试。
此外,我建议您测试运行Angular应用程序的当前设置,并检查是否看到相同的行为。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。