今天前後互動 的時候發現session的id不一致。(我的邏輯是這樣的,使用者登入,賬號密碼都正確的時候,我就把使用者資訊放到session裡面去,後續各種操作例如:獲取使用者資訊等等。就不需要傳遞uid了。)
我這邊後台伺服器啟動,前端進行介面對接的時候,後台一直獲取不到值。最後發現request裡有值,session也有值,但是session的id卻不一致。想來想去不知道怎麼回事。後來無意間想到跨域,以前解決過跨域問題,就是在fitter裡加上
response.setheader("access-control-allow-origin", "*");
response.setheader("access-control-allow-methods", "post, get, options, delete");
response.setheader("access-control-max-age", "3600");
response.setheader("access-control-allow-headers", "content-type, access-control-allow-headers, authorization, access-token");
第一行,意思是執行從所有位址發來的請求。
第二行,意思是允許 post, get, options, delete,這些方式的請求
第三行,意思是在該響應在多少秒內有效
第四行,意思是允許的請求頭型別
可是對於今天的問題還是報錯了。
那麼從新來設定
response.setheader("access-control-allow-origin", request.getheader("origin"));
response.setheader("access-control-allow-methods", "post, get, options, delete");
response.setheader("access-control-max-age", "0");
response.setheader("access-control-allow-headers", "origin, no-cache, x-requested-with, if-modified-since, pragma, last-modified, cache-control, expires, content-type, x-e4m-with,userid,token,access-control-allow-headers");
response.setheader("access-control-allow-credentials", "true");
response.setheader("xdomainrequestallowed","1");
注意:
access-control-allow-credentials 是true的時候。 access-control-allow-origin"的值不能為*。
同時
在ajax 請求是也要加相應的東西
$.ajax(,
crossdomain: true,
success:function(result),
error:function()
});這樣我們再跨域測試的時候,就會發現我們的sessionid是一樣的了,這樣就實現了跨域並且保證在同乙個session下。
以上,解決問題。
參考:
VUE 跨域及SESSION改變不一致解決
vue向後台傳送cookie中包含session資訊,需要在requset.js中如下設定 import axios from axios axios.defaults.withcredentials true 建立axios 例項 spring跨域處理 跨域需要設定前台訪問請求網域名稱,在沒有需要...
解決跨域訪問導致session id不一致的問題
一 問題 前後端分離專案,使用了session儲存使用者的資訊,使用者登入成功後,用同乙個token去獲取使用者資訊時,出現了提示該使用者未登入的錯誤。二 原因 前端使用ajax請求,涉及到跨域問題,導致了同乙個使用者的請求的session id不一致,所以出現上述問題,日誌捕獲到的session ...
ajax跨域導致sessionId不一致
網上有很多方法,大部分相同,也是有用的,只是我被折磨了好幾天,竟是chrome瀏覽器同一視窗每次請求sessionid不同問題。也就是ajax跨域導致sessionid不一致我解決啦,但是我忘了chrome設定的問題,結果一直卡在這。所有分兩步 1.先解決chrome瀏覽器同一視窗每次請求sessi...