美文网首页工作中源代码学习
Http响应头Set-Cookie有Secure属性,导致前端请

Http响应头Set-Cookie有Secure属性,导致前端请

作者: ___TheOne___ | 来源:发表于2024-05-05 18:37 被阅读0次

1. 问题背景

  • 点餐后勤端是一个 前后端分离项目;
  • 前端是Vue2.0,后端是SpringBoot、SpringSecurity;
  • 前端本地开发联调,请求链路
    前端本地(http)启动------>Vue Proxy(解决跨域)------>华为云ELB------>后端manage(https)

说明:
近期后端进行容器化&CICD改造,将后端相关服务从 【华为云ECS】迁移到了【华为云CCE容器】。此次改造仅涉及后端服务部署方式,代码均为改动。

前端开发发现,之前ECS方式 Set-Cookie可以正常生效,迁移后的CCE方式 Set-Cookie不生效,并且手动显式设置也不行。

2.原因

前端请求登录接口/dologinmng成功后,请求响应头Set-Cookie:SESSION 有Secure属性,导致无法设置Cookie。
说明:
【华为云ECS】没有Secure属性;
【华为云CCE容器】有Secure属性。

正式ECS-正常可设置Cookie 公测CCE容器-无法设置Cookie
Set-Cookie 警示标对应提示语

3.解决

  1. 前端本地请求设置https---已解决;


    在vue的config中设置
  2. 后端公测将Set-Cookie:SESSION 对应设置的Secure属性移除掉---待定位具体源码。

问题思考: 为什么正式ECS也是https443 ELB负载,Set-Cookie却没有Secure属性,按理来说应该也有Secure属性才对?

Set-Cookie:SESSION 是SpringSecurity的自动行为。
当Spring Security自动判断是否应该设置Secure属性时,它通常会检查以下几个方面:1> 应用配置中的HTTPS设置:如果你在应用的配置中明确指定了只能通过HTTPS提供服务,Spring Security将会自动设置Secure属性。例如,在Spring Boot应用中,你可以在application.properties或application.yml文件中配置server.ssl.enabled=true来启用HTTPS。2> 安全通道的检测:Spring Security会检测当前请求的通道是否安全。如果请求是通过HTTPS连接到达的,它会自动设置Secure属性;而如果请求是通过不安全的HTTP连接到达的,则不会设置Secure属性。3> 环境变量:有些部署环境可能会在运行时提供关于安全连接的信息,例如在云平台或者负载均衡器上。Spring Security可以利用这些信息来决定是否设置Secure属性。

4.反思

  1. 要自己梳理下问题的始末,有全局的了解。
  2. 不要拿来主义,对别人的结论,多问一句:“你说的结论能证明吗?”

相关文章

网友评论

    本文标题:Http响应头Set-Cookie有Secure属性,导致前端请

    本文链接:https://www.haomeiwen.com/subject/brwkfjtx.html