Spring Boot+AngularJS中因為跨域導致Session丟失
如果還在為跨域問題煩惱,請檢視博主的 解決angular+spring boot的跨域問題 那篇文章。
博主在專案開發過程中,遇到了由於跨域而導致的Session丟失問題,非常的噁心,但是經過在網上查閱各種資料,發現解決方法十分簡單。
在我們每一次的資料請求中,瀏覽器都會向後臺傳送一個JSession,後臺會根據這個值自動查詢Id為JSession的那個session物件。但是當跨域時,JSession的值每次都會改變,後臺就會以為是新的一個會話開啟,於是又去建立了一個新的Session物件,而原來的Session物件就找不到了。
解決這個問題的方法很簡單
首先在Angular請求中將withCredentials設為true,然後每次請求的頭中就會帶有cookie的值,cookie中就記錄了JSession值,因此Session就不會丟失了。
在AngularJS中,可以通過全域性設定,使得withCredentials為true
var utils = angular.module('Utils', []);
utils.config(['$httpProvider', config]);
function config($httpProvider) {
$httpProvider.defaults.withCredentials = true;
}
然後讓在所有的app中都注入'Utils',就會將所有的請求頭中的withCredentials設定為true,這樣Session就不會丟失啦。
當然也可以通過以下方法來設定當前請求的withCredentials。
$http.xhr.withCredentials
然後在後臺也開啟.withCredentials
@Configuration
public class CorsConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)//就是這個啦
.allowedMethods("GET", "POST", "DELETE", "PUT")
.maxAge(3600);
}
}
那麼.withCredentials是幹嘛的呢?
它需要前後端一起開啟,開啟之後就能夠讀寫瀏覽器的Cookies,但是這個Cookies是完全由你要請求站點控制的,我們無法通過js去獲取或改變Cookies中的值。
相關文章
- iframe跨域session丟失問題跨域Session
- 因為跨域問題導致的無法讀取 response header跨域Header
- 前後端分離解決session跨域丟失問題後端Session跨域
- struts中session丟失Session
- TSM備份時因歸檔日誌丟失而導致備份失敗
- 獲取登入驗證碼失敗及前後端不同域導致session丟失問題分析記錄後端Session
- PHP中SESSION丟失(不能跨頁面傳遞)解決辦法PHPSession
- Nginx轉發導致請求頭丟失Nginx
- 急救:叢集session丟失!Session
- php跨域共享sessionPHP跨域Session
- 私有網路介面丟失導致例項崩潰
- chorme自動升級導致跨域問題ORM跨域
- canvas因為圖片資源不在同一域名下而導致的跨域汙染畫布的解決辦法Canvas跨域
- 一次密碼檔案丟失導致的dataguard複製中斷密碼
- 儲存崩潰導致資料丟失如何處理
- Oracle全部索引丟失導致的效率問題處理Oracle索引
- 使用impdp不當導致的資料丟失問題
- php實現SESSION跨域PHPSession跨域
- 再遇CORS -- 自定義HTTP header的導致跨域CORSHTTPHeader跨域
- 導致程式設計師在工作中丟失激情的5件事程式設計師
- 關於Session值丟失問題Session
- Oracle歸檔檔案丟失導致OGG不用啟動Oracle
- 伺服器當機會導致Kafka訊息丟失嗎伺服器Kafka
- 電腦突然斷電導致檔案丟失怎麼辦?
- 磁碟損壞導致資料檔案丟失的恢復
- cassandra tombstone導致寫資料丟失問題徵解
- MySQL 5.6因為OOM導致資料庫重啟MySqlOOM資料庫
- 儲存互斥失敗導致資料丟失的資料恢復成功案例資料恢復
- 【RAC】因清理不完整導致RAC ASM例項建立失敗ASM
- 【故障處理】因授權資訊丟失導致IMP時出現IMP-00041錯誤的模擬與分析
- 關於 iconv 轉碼導致資料丟失的問題
- 重灌系統導致分割槽丟失的資料恢復案例資料恢復
- ORA-00600,伺服器斷電導致日誌丟失伺服器
- 關閉資料庫會導致cache的sequence值丟失嗎?資料庫
- 因為init_command 導致的 mysql 5.6 主從連線失敗的案例一則。MySql
- 請教tomcat session丟失問題TomcatSession
- 因為一個跨域請求,我差點丟了飯碗跨域
- Drive客戶端因SSL證書已更改導致聯機失敗客戶端