angularjs - Angular容器未将cookie发送到docker-compose中的spring后端容器
问题描述
我正在尝试使用 docker-compose 一堆客户端和服务进行 dockerize,以在持续集成中实现 E2E 测试。堆栈(每个组件都附带其 Dockerfile)由以下组成:
- 一个 Cypress 项目(与 Angular 项目分开)
- Angular Web 应用程序客户端
- NodeJS 身份验证服务器
- 一个 Spring Boot 资源服务器
- 甲骨文数据库
- 一个桥接网络,所有容器都一样。
Angular 客户端从 Nodejs 身份验证服务器接收包含 JSON Web 令牌的 HTTP cookie。
当我在 HTTP 调用中设置 'withCredential: true' 选项时,应该在后续请求中发送 cookie。
在我的开发环境中一切正常,我已经解决了有关 CORS 的任何问题(将 Access-Control-Allow-Credential 设置为 true,使用 Web 应用程序 URL 设置 Access-Control-Allow-Origin,假设 http://localhost:80,on资源和身份验证服务)。
问题是当我把所有东西都放在 docker compose 中并且 Cypress 容器调用 Angular 容器来执行 E2E 测试时。对身份验证服务器的登录仍然有效,但对资源服务器的每次调用都以 403 错误结束。就像 cookie 没有从 Web 应用程序发送到资源服务一样。
因为赛普拉斯处于无头模式,我看不到浏览器开发者工具。
与我的开发环境的唯一区别是每个组件用来相互引用的名称。在我的计算机上(显然)是 localhost:hostPort,在撰写堆栈中是 serviceName:exposedPort
包含调用每个组件的链接的配置文件安装在 docker-compose 文件中
我尝试了我能想到的一切,但没有什么能解决我的问题。有人能帮我吗?
谢谢
解决方案
推荐阅读
- jquery - 是否可以重构此功能?
- c# - Dynamics CRM:CreateRequest 并发问题
- php - 使用自动生成的 ID 将教义插入 Oracle 12c 数据库表
- c# - 如何在 C#(Windows 窗体应用程序)中以数组的形式获取文件的详细信息?
- c - c中的md5sum数组
- python - 来自选定列表框项目的可滚动复选按钮
- php - PHP Magic __invoke 对类的对象属性
- angular - Angular4+ ReactiveForms 禁用和启用控件
- c++ - 在 C++20 中是否不再允许在 std 中为程序定义类型专门化函数模板?
- jenkins - 我们如何使用 ibmcloud 在 jenkins 中创建 bluemix 的 cloudant 服务?ibmcloud 插件可用于 jenkins