首页 > 解决方案 > Angular容器未将cookie发送到docker-compose中的spring后端容器

问题描述

我正在尝试使用 docker-compose 一堆客户端和服务进行 dockerize,以在持续集成中实现 E2E 测试。堆栈(每个组件都附带其 Dockerfile)由以下组成:

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 文件中

我尝试了我能想到的一切,但没有什么能解决我的问题。有人能帮我吗?

谢谢

标签: angularjsdockercookiesdocker-composedocker-networking

解决方案


推荐阅读