Chrome第三方Cookie限制对多应用会话机制的影响咨询
背景信息
Chrome提示:
Chrome会阻止您访问的网站(包括关联网站)的所有第三方Cookie。随浏览流量发送“请勿跟踪”请求:开启此选项后,您将请求网站不要跟踪您。
系统包含三类部署在同一Kubernetes集群的应用:
- 基于Java EE的单体Web应用,UI采用GWT开发
- Angular应用
- Spring Boot开发的REST API服务
GWT UI通过iframe加载Angular应用:
<iframe id="angular-app-id" src=<angular-app-url> .../>
GWT和Angular前端均需调用Spring Boot REST API。用户登录后,REST API返回标记为Secure; HttpOnly的会话Cookie,后续前端请求默认携带该Cookie。
咨询问题
- Chrome是否会阻止我系统中的这种安全会话Cookie机制?
- 若Angular与GWT应用部署在不同DNS子域名下,Chrome是否会阻止该Cookie的使用?
问题解答
问题1:Chrome是否会阻止当前的安全会话Cookie机制?
不会阻止。原因如下:
- 会话Cookie由REST API直接返回给发起请求的前端应用(GWT或Angular),属于第一方Cookie——Cookie的域与当前页面的域一致,Chrome的第三方Cookie限制仅针对跨域场景下的第三方Cookie,这种第一方场景不受影响。
- Cookie设置了
Secure; HttpOnly属性,符合Chrome对安全Cookie的要求,不会因属性问题被拦截。
问题2:Angular与GWT应用部署在不同DNS子域名下时,Cookie是否会被阻止?
分两种场景判断:
- REST API与两个前端同属主域名的子域(例如GWT在
gwt.example.com、Angular在angular.example.com、API在api.example.com):- 只要设置Cookie时指定
Domain=.example.com(主域名前缀加.),该Cookie可被所有子域共享。此时无论GWT还是Angular请求API,Cookie都属于第一方范畴,Chrome不会阻止。 - 需保持Cookie的
Secure属性,因为子域请求需通过HTTPS,否则SecureCookie不会被发送。
- 只要设置Cookie时指定
- REST API与其中一个前端跨主域名(例如Angular在
angular.abc.com、API在api.example.com):- 当Angular从iframe中请求API时,Cookie会被判定为第三方Cookie,Chrome会阻止该Cookie的发送,导致会话验证失败。
内容的提问来源于stack exchange,提问作者user842225
相关产品推荐
相关产品推荐

