angular - 如何诊断为什么 Mac 和 iOS 上的 Safari 中的 Angular 应用程序没有将 cookie 发送回服务器 API?
问题描述
我有一个 Angular 应用程序,它从使用 SpringBoot 用 Java 编写的服务调用多个 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!瞧!有用。我不知道发生了什么变化 - 我没有对客户端或服务器进行任何更改。我只能想象它需要以某种方式“解决”!
解决方案
大约一周前,我沮丧地写了这个问题,我意识到它被描述得很糟糕。我今天去清理它,并试图添加更具体的信息试图再次访问我的测试服务器,Lo!瞧!有用。我不知道发生了什么变化 - 我没有对客户端或服务器进行任何更改。我只能想象它需要以某种方式“解决”!
推荐阅读
- visual-studio-code - 在 VS Code 中配置 tasks.json 文件以在 Mac 上使用特定版本的 C++ 编译 C++
- unity3d - 从检查器调试菜单或 Unity 编辑器中的检查器自由编辑四元数
- python-3.x - 字典python的二元组出现
- node.js - Puppeteer page.click 在无头模式下不起作用
- spring-boot - 在 Spring Cloud 配置更新中重新加载 CamelContext 或路由
- java - 虽然我使用 AsyncTask 应用程序没有响应
- python - 是否可以在 tkinter Canvas '.find_withtag' 中使用通配符?
- arrays - Laravel - Eloquent where with array
- reactjs - 安装我的 PWA 时未加载外部资源(Service Worker 问题?)
- regex - 电子邮件正则表达式匹配 [dot] for "." & [at] 表示“@”