cookie被禁止后怎樣使用session?
從事WEB開發的朋友都很清楚,Cookie和Session都是實現會話保持的技術方案。我們在實際項目開發過程中也經常會發現Session會話丟失的現象,最常見的例子就是:明明登錄了后臺,但在很短的時間內刷新頁面,又要求重新登錄,這就是會話丟失的一種表現。
像這種會話丟失現象的原因是啥呢?很大一部分是因為客戶端的Cookie失效導致的。
Session和Cookie的關系對于Session和Cookie之間的區別相信大家都很清楚,但很多從事開發工作的朋友卻不知道這兩者之間的聯系。我面試過不少WEB開發者,甚至還有四五年開發經驗的朋友都不清楚。
簡單來說就是,Session和Cookie是搭配使用的,Session中的唯一標識符(SessionID)是存儲在客戶端瀏覽器中的Cookie中的。如果客戶端的Cookie被禁用了,那Session工作也會異常的。因為SessionID無法保持下去,客戶端的每次請求又被當成了新用戶的請求。
禁用Cookie后如何保障Session機制正常?因為Cookie是保存在客戶端瀏覽器的,而且客戶端瀏覽器是允許用戶自行設置是否關閉Cookie的。所以對于WEB開發人員而言,一定要做好兼容性處理,一般在項目開發中我們是這樣來處理Cookie和Session的。
1、WEB前端判斷用戶瀏覽器的Cookie是否處于開啟狀態:
可以通過前端JS代碼來嘗試寫入Cookie,看是否正常,如果客戶端瀏覽器的Cookie是禁用狀態,那需要將服務器端生成的SessionID以GET方式附加到每次請求中,比如這種形式:
http://xxx.com/index.php?id=123&sessid=xxxxxxxx2、服務器端接收GET傳參中的SessionID
如果用戶GET請求中含有SessionID的傳參(如上面例子中的 sessid參數),那我們在服務器端要獲取到這個傳參的值,然后以此值作為SessionID去尋找對應的Session即可。比如PHP語言可以通過session_id()函數來獲取、設置SessionID。
3、客戶端友好頁面引導用戶去開啟Cookie
若前期項目沒有做好這方面的兼容性處理,而且改造起來代價很大,那我們可以在前端做個引導頁,如果Cookie是禁用狀態,則彈出此引導頁引導用戶開啟Cookie。
以上就是我的觀點,對于這個問題大家是怎么看待的呢?歡迎在下方評論區交流 ~ 我是科技領域創作者,十年互聯網從業經驗,歡迎關注我了解更多科技知識!