开发环境: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标记,也是坑。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。