Springboot2+vue 前後端分離 springsession無法獲取緩存信息的問題 sessionId不一致的問題

首先可以肯定的是這個問題的原因就是跨域的問題。

本地的請求服務器、或者請求局域網內的其他服務器都不行,沒辦法開發調試

 

 

跨域的一些配置全都配置了,還是不能獲取到登錄用戶的信息。

跨域的時候無法傳遞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

 

非常感謝大佬的分享 感謝感謝感謝感謝感謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章