在特定子域之间共享Cookie

时间:2019-09-24 12:47:01

标签: spring-boot servlets cookies

我正在开发基于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

我正在尝试设置cookie,当从angularjs调用登录api时,该cookie包含后端在浏览器中生成的jwt令牌。

当我在spring-boot中设置基本域URL时,将使用以下代码将Cookie设置到浏览器中:

Cookie cookie = new Cookie("Authentication", jwt);
cookie.setPath("/");            
cookie.setDomain("mydomain.com"); //this works
response.addCookie(cookie);

这将为我们公司域中托管的其他应用设置cookie,但不会与我的应用共享用户凭据。由于我希望Authentication cookie标头仅对前端应用程序可见,因此我尝试在代码中设置前端子域url。但这不起作用。

...            
cookie.setDomain("myapp-frontend.mydomain.com"); //not setting cookie
...

我了解出于安全原因无法跨不同的域设置cookie,但是为什么设置子域url不起作用?

出于好奇,我尝试将后端子域放在setDomain()中,并在检查chrome开发人员工具时将cookie设置在myapp-backend.mydomain.com下。由于它可以使用基本域网址,因此我相信我已经正确实现了CORS。

我在这里错过了什么吗?任何输入将不胜感激。

0 个答案:

没有答案