spring-boot - 在特定子域之间共享 cookie
问题描述
我正在开发一个基于 spring-boot 的后端应用程序和一个基于 angularjs 的前端应用程序,它们托管在具有不同子域的同一域上。
myapp-frontend.mydomain.com //my angularjs app
myapp-backend.mydomain.com //my spring-boot app
otherapp-frontend.mydomain.com //some existing app running on same domain but unrelated
当从 angularjs 调用登录 api 时,我正在尝试将包含后端生成的 jwt 令牌的 cookie 设置到浏览器。
当我在 spring-boot 中设置基本域 url 时,使用此代码将 Cookie 设置到浏览器中:
Cookie cookie = new Cookie("Authentication", jwt);
cookie.setPath("/");
cookie.setDomain("mydomain.com"); //this works
response.addCookie(cookie);
这会为我们公司域上托管的其他应用程序设置 cookie,但不会与我的应用程序共享用户凭据。由于我希望身份验证 cookie 标头仅对我的前端应用程序可见,因此我尝试在代码中设置前端子域 url。但这不起作用。
...
cookie.setDomain("myapp-frontend.mydomain.com"); //not setting cookie
...
我了解出于安全原因无法跨不同域设置 cookie,但为什么设置子域 url 不起作用?
出于好奇,当我签入 chrome 开发人员工具时,我尝试将后端子域放在 setDomain() 中,并且 cookie 设置在 myapp-backend.mydomain.com 下。由于它使用基本域 url,我相信我已经正确实现了 CORS。
我在这里错过了什么吗?任何投入将不胜感激。
解决方案
推荐阅读
- c# - dotnet-SonarScanner - 无法分析 C# 文件
- actionscript-3 - AS3/FLEX 如何扩展 RadioButton 的可点击区域 (mxml)
- angular - 错误:目标入口点“ng-particles”缺少依赖项:- tsparticles
- python - FastAPI auth with jwt,但不是 OAuth2 - 是否可以自定义内置 OAuth2PasswordBearer?
- css - CSS根据页面定位
- powershell - 如何使用命令提示符在 Windows 操作系统的终端中打开新终端
- python - 如何让按钮在 python tkinter 中右键单击时显示永久图像
- python - 如何在seaborn中制作具有许多独特颜色的彩色地图
- python - 如何正确地大写句子?
- python-3.x - 无法从 Ansible Playbook 中运行 Python 脚本