首先可以肯定的是這個問題的原因就是跨域的問題。
本地的請求服務器、或者請求局域網內的其他服務器都不行,沒辦法開發調試
跨域的一些配置全都配置了,還是不能獲取到登錄用戶的信息。
跨域的時候無法傳遞Cookies,所以sessionid每次都不一樣。
網上說的設置Origin爲同源什麼的,試過了都不好使。
通過查資料得知
DefaultCookieSerializer 中 sameSite值默認爲Lax
通過百度得知:
SameSite-cookies是一種機制,用於定義cookie如何跨域發送。這是谷歌開發的一種安全機制,並且現在在最新版本(Chrome Dev 51.0.2704.4)中已經開始實行了。SameSite-cookies的目的是嘗試阻止CSRF(Cross-site request forgery 跨站請求僞造)以及XSSI(Cross Site Script Inclusion (XSSI) 跨站腳本包含)攻擊。
Strict
Strict是最嚴格的防護,有能力阻止所有CSRF攻擊。然而,它的用戶友好性太差,因爲它可能會將所有GET請求進行CSRF防護處理
Lax
屬性只會在使用危險HTTP方法發送跨域cookie的時候進行阻止,例如POST方式
所以,把sameSite設置爲null,就可以了。
添加一個配置類:
@Configuration
public class SpringSessionConfig {
public SpringSessionConfig() {
}
@Bean
public CookieSerializer httpSessionIdResolver() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
// 取消僅限同一站點設置
cookieSerializer.setSameSite(null);
return cookieSerializer;
}
}
參考了:
https://www.cnblogs.com/hujinshui/p/11025848.html
https://segmentfault.com/a/1190000017175342?utm_source=tag-newest
https://segmentfault.com/a/1190000017824101
非常感謝大佬的分享 感謝感謝感謝感謝感謝