解決前後端分離,加上@CrossOrigin跨域之後Session卻不能共享的問題

解決前後端分離,加上@CrossOrigin跨域之後Session卻不能共享的問題

一 問題描述

因爲有跨域問題,所以當我使用@CrossOrigin解決跨域之後,驚奇的發現Session竟然不能共享,wa!!!咋整啊,在網上找到了解決辦法

二 解決辦法

老版

@CrossOrigin(allowCredentials="true", allowedHeaders="*")

新版

@CrossOrigin(origins = {" * "}, allowedHeaders="*")

然後再試了一下發現還是不信,ono!

經過一個小時的放鬆最後想起來還要加一個東西!!!!【不止後端加,前端也要加】

前端使用ajax要記得配置xhrFields屬性:就是將該ajax的請求變爲一個允許跨域授信的請求。

$.ajax({
    type:...,
    ....
    xhrFields:{withCredentials:true},
    ...
})

三 原理

對於後端的原理來說:

就是改變CrossOrigin的默認值

allowCredentials="true"其實是配置了CrossOrigin中的DEFAULT_ALLOWED_HEADERS:允許跨域傳輸所有的header參數,將用於使用token放入header域做session共享的跨域請求

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