解決前後端分離,加上@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共享的跨域請求