## 問(wèn)題描述
之前運(yùn)行良好的項(xiàng)目缰儿,使用Zuul作為網(wǎng)關(guān)負(fù)責(zé)請(qǐng)求的轉(zhuǎn)發(fā)與負(fù)載均衡畦粮,這段時(shí)間修改了項(xiàng)目突然發(fā)現(xiàn)不支持session跨域了,sensitive-headers:也設(shè)置了乖阵,withCredentials: true也加了宣赔,但是每次請(qǐng)求sessionId都不一致,很苦惱瞪浸,兩天之后發(fā)現(xiàn)問(wèn)題儒将,
一直以為不是錯(cuò)誤和異常的一條消息,點(diǎn)開后發(fā)現(xiàn)Indicate whether to send a cookie in a cross-site request by specifying its SameSite attribute
## 原因
新版的Chrome 當(dāng)請(qǐng)求設(shè)置為? “SameSite=None”和“Secure”時(shí)对蒲,才會(huì)發(fā)送cookie
得到教訓(xùn)钩蚊,要達(dá)到 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和后端請(qǐng)求接口設(shè)置在同一域名下
4.修改Chrome瀏覽器設(shè)置(不安全)
Chrome瀏覽器地址欄中輸入
chrome://flags/#same-site-by-default-cookies
將下圖按鈕設(shè)置為disabled