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,这里多了个HttpOnlySameSite,而问题就出在这个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标记,也是坑。


水木酱
398 声望7 粉丝

戒骄戒躁,勿忘初心