首页 > 解决方案 > 如何诊断为什么 Mac 和 iOS 上的 Safari 中的 Angular 应用程序没有将 cookie 发送回服务器 API?

问题描述

我有一个 Angular 应用程序,它从使用 SpringBoot 用 Ja​​va 编写的服务调用多个 REST API。

第一个 API 是“登录”API,它会在响应的 cookie 中返回访问令牌。

所有后续 API 调用都需要在请求 cookie 中包含该访问令牌。

在本地开发时 - ng serve 在端口 4200 和 Spring Boot 在端口 8080 上,这一切都很好。

在部署到测试服务器 - 应用程序的 AWS S3 和服务的 AWS Elastic Beanstalk 时,我注意到仅在 Safari for Mac 和 iOS 中存在问题。

初始登录请求成功,我在响应中获得了访问令牌 cookie。

但是,来自浏览器的后续请求不包括 cookie。

在 Web 控制台中查看 Cookie 存储时,cookie 不存在。

这似乎只影响 Safari。它在 Firefox 中运行良好。

我注意到在 Firefox 中,我看到有关 cookie 中的 SameSite 属性无效或不存在的警告。我在 Safari 中没有看到这样的警告或错误。我不认为这是问题所在,因为在 Safari 中访问我的开发服务器时这不是问题。

访问我的本地开发服务器时,Safari 和 Firefox 都可以工作。Firefox 在访问我在 AWS 上的测试服务器时工作。访问我在 AWS 上的测试服务器时,Safari 无法正常工作。

两种服务都是 HTTP 而不是 HTTPS。

更新:大约一周前,我沮丧地写了这个问题,我意识到它被描述得很糟糕。我今天去清理它,并试图添加更具体的信息试图再次访问我的测试服务器,Lo!瞧!有用。我不知道发生了什么变化 - 我没有对客户端或服务器进行任何更改。我只能想象它需要以某种方式“解决”!

标签: angularcookiessafari

解决方案


大约一周前,我沮丧地写了这个问题,我意识到它被描述得很糟糕。我今天去清理它,并试图添加更具体的信息试图再次访问我的测试服务器,Lo!瞧!有用。我不知道发生了什么变化 - 我没有对客户端或服务器进行任何更改。我只能想象它需要以某种方式“解决”!


推荐阅读