无法为 spring boot 1.5.22 设置 cookie samesite=none
Posted
技术标签:
【中文标题】无法为 spring boot 1.5.22 设置 cookie samesite=none【英文标题】:Not able to set cookie samesite=none for spring boot 1.5.22 【发布时间】:2021-01-11 02:19:21 【问题描述】:我正在使用 Spring Boot 1.5.22,但我遇到了 cookie samesite=none proporty 的问题。我无法为 cookie 设置 samesite 属性,因此 oauth 身份验证不适用于 chrome,但它正在其他浏览器上运行。所以,我尝试了一些这样的解决方案。
@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer
@Override
public void customize(ConfigurableEmbeddedServletContainer container)
if (container instanceof TomcatEmbeddedServletContainerFactory)
TomcatEmbeddedServletContainerFactory factory = TomcatEmbeddedServletContainerFactory.class.cast(container);
factory.addContextCustomizers(new TomcatContextCustomizer()
@Override
void customize(Context context)
Rfc6265CookieProcessor cookieProcessor = new Rfc6265CookieProcessor()
cookieProcessor.setSameSiteCookies("None")
context.setCookieProcessor(cookieProcessor)
)
这并没有帮助。所以我尝试添加自定义过滤器
@Component
public class SameSiteFilter implements Filter
@Override
public void init(FilterConfig filterConfig) throws ServletException
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
chain.doFilter(request, response);
addSameSiteCookieAttribute((HttpServletResponse) response);
private void addSameSiteCookieAttribute(HttpServletResponse response)
Collection<String> headers = response.getHeaders(HttpHeaders.SET_COOKIE);
boolean firstHeader = true;
for (String header : headers)
if (firstHeader)
response.setHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, "SameSite=None;"));
firstHeader = false;
continue;
response.addHeader(HttpHeaders.SET_COOKIE, String.format("%s; %s", header, "SameSite=None;"));
@Override
public void destroy()
我将此添加为 addFilterBefore(new SameSiteFilter(),BasicAuthenticationFilter.class) 和 addFilterAfter(new SameSiteFilter(),BasicAuthencticationFilter.class) 在 HttpSecurity 中配置
无论如何都要为 jsessionid 设置 SameSite=None
【问题讨论】:
【参考方案1】:我使用的是嵌入式 tomcat 8.54,它没有将 samesite 设置为 none,而是适用于其他值,例如 lax、strict。所以更新将tomcat嵌入到8.58,我猜他们修复了那个错误。所以,更新tomcat版本解决了我的问题
【讨论】:
兄弟,你能提供完整的项目或更新的代码吗?我也有同样的问题!以上是关于无法为 spring boot 1.5.22 设置 cookie samesite=none的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Hibernate 在 Spring Boot 中将 MongoDB 设置为自动递增
无法使用 Spring Boot + GORM + Gradle 设置 NamingStrategy
无法在 Spring Boot 中为 Hikari 设置 keepAlive Time 配置
使用 KeycloakAutoConfiguration 无法使用 Spring Boot Security UnsatisfiedDependencyException 设置 Keycloak