跨域携带cookies无效问题

68次阅读

共计 740 个字符,预计需要花费 2 分钟才能阅读完成。

开发环境:vue,axios 0.17.1,springboot 2.1.1,springsession 在本地测试页面时,发现 cookies 都没有传上去,本地测试是跨域的,原先是正常的。
开始以为是 axios 问题,结果试了 XMLHttpRequest 也是一样,都已设置 withCredentials:true。跨域的请求都能接收和回应,但是请求时 cookies 都没有携带。
看了下 set-cookie 的值:SESSION=YWFlZTBjY2QtOWE4NC00MmI4LWEwZWEtYjUxYzY2ZjMyN2Nh; Path=/server/; HttpOnly; SameSite=Lax,这里多了个 HttpOnly 和 SameSite,而问题就出在这个 SameSite 上。(可能是更新到 SpringSession2 之后导致的)
取消 SameSite:
// SpringSession 配置类
@EnableRedisHttpSession(
maxInactiveIntervalInSeconds = 7200
)
public class SpringSessionConfig {
public SpringSessionConfig() {}

@Bean
public CookieSerializer httpSessionIdResolver() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
// 取消 samesite
cookieSerializer.setSameSite(null);
return cookieSerializer;
}
}
ps:chrome 的 network 中看不到跨域的 set-cookie 标记,也是坑。

正文完
 0