微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从HTTP标头请求中获取set-cookie并将其发送到另一个API angular

如何解决如何从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,是吗?过去我曾遇到过类似的问题,但是我不需要对代码进行任何更改。我必须进行一些特定于环境的更改。

我不知道您使用的确切环境,但是以下几点可能会帮助您找到解决方案:

  1. 登录REST API调用和后续的REST API调用(如果它们是在同一个服务器/ URL域中进行的),则cookie应与浏览器在后续请求中的请求一起自动发送。
  2. 从登录REST API的响应中检查响应的标题标签。 set-cookie条目是否具有名为“ HttpOnly”的属性?如果是这种情况,我怀疑是否可以通过javascript代码访问cookie。
  3. 如果没有2是否适用,您的Angular应用程序是否在HTTP上运行,而REST API是否在HTTPS上运行?如果是这样,除非您的Angular应用程序在HTTPS上运行,否则您的浏览器将不会在后续请求中发回接收到的cookie。在这种情况下,您可能需要使用自签名证书才能在本地主机上的HTTPS上运行Angular应用程序进行测试。

此外,我建议您测试运行Angular应用程序的当前设置,并检查是否看到相同的行为。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。