关于跨域访问Zuul和gateway,Session不一致的问题

2021-01-14  本文已影响0人  25799c5cd22c

## 问题描述

之前运行良好的项目,使用Zuul作为网关负责请求的转发与负载均衡,这段时间修改了项目突然发现不支持session跨域了,sensitive-headers:也设置了,withCredentials: true也加了,但是每次请求sessionId都不一致,很苦恼,两天之后发现问题,

一直以为不是错误和异常的一条消息

一直以为不是错误和异常的一条消息,点开后发现Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute

## 原因

新版的Chrome 当请求设置为  “SameSite=None”和“Secure”时,才会发送cookie

得到教训,要达到 0 error, 0 warning 必须把warning视作error

## 解决方案

添加bean

@Bean

public CookieSerializerhttpSessionIdResolver() {

DefaultCookieSerializer cookieSerializer =new DefaultCookieSerializer();

    cookieSerializer.setUseHttpOnlyCookie(false);

    cookieSerializer.setSameSite("None");

    cookieSerializer.setCookiePath("/");

    cookieSerializer.setUseSecureCookie(true);

    return cookieSerializer;

}

其他方法

1.降低浏览器版本在79以下,或者换别的浏览器

2.换https

3.将前端的url和后端请求接口设置在同一域名下

4.修改Chrome浏览器设置(不安全)

Chrome浏览器地址栏中输入

chrome://flags/#same-site-by-default-cookies

将下图按钮设置为disabled

其实修改这个就可以

[更详细可见CoreyJu]

上一篇 下一篇

猜你喜欢

热点阅读