在web開發過程中,cookie是我們常用的功能;最基本的用來儲存服務端返回的jsessionid來識別使用者,甚至儲存其它更多的客戶資訊。假如客戶端瀏覽器禁用了cookie,將會導致很多基於cookie的功能出現異常,甚至無法使用,作為開發者,我們怎麼來解決這種問題呢?
筆者碰到的問題是在在通過session實現登陸保持的情況下,如何讓超時時間內的請求都可以識別到該使用者。如果cookie在可用的情況下很好實現,會自動通過名為jsessionid的cookie來記錄sessionid;如果cookie不可用呢?筆者採用的方法是在登陸成功後將sessionid返回給前端,然後前端通過其它可用的資料持久化技術,將該sessionid儲存在客戶端硬碟中(比如使用loalstorage);然後在後面的ajax請求中,通過判斷瀏覽器是否禁用cookie來判斷是否需要將";jsessionid=***"
加入到請求的url末尾。
服務端部分**:
// 將sessonid返回給前端
retmap.
put(
"sessionid"
, session.
getid()
);retmap.
put(
"state",0
);retmap.
put(
"person"
, personinfo)
;retmap.
put(
"message"
,"賬號/密碼登陸成功"
);
前端部分**:
$.
ajax(,
datatype:
'json'
, url :
getcookieurl_2
("../../slogindemo/login.do"),
success:
function
(res)
else},
error:
function
(err)})
/** * 判斷瀏覽器是否支援localstorage
* */
function
supports_html5_storage()
catch(e
)}/** * 通過判斷客戶端瀏覽器是否支援cookie來判斷是否將jsessionid加入到url後
* */
function
getcookieurl_2
(url)
return url;
}
以上方法看似解決了禁用cookie產生的問題,可是筆者在實際測試過程中發現localstorage同樣有可能被禁用。比如筆者在使用chrome測試的時候,如果禁用了cookie,localstorage會同時被禁用。在這種情況下筆者以上列出的**也無法實現通過session來識別使用者。
總之,如果想使用session,客戶端瀏覽器必須通過資料持久化技術來儲存sessionid,無論是cookie還是localstorage,都是一種資料持久化的技術手段,如果大家知道有其它手段都可以使用,前提是瀏覽器支援該技術而且沒有禁用該技術。
登錄檔被禁用了怎麼辦?
1.新建乙個記事本 在記事本中輸入以下 regedit或regedit4 hkey users default software microsoft windows currentversion policies system disableregistrytools dword 00000000 ...
啟用了巨集仍然被禁用怎麼辦
解決方法 1 點選 選項 按鈕,勾選 啟用此內容 即可。2 點選 office excel選項 按鈕,在新視窗勾選 在功能區顯示 開發工具 選項卡 開啟頁面頂部的 開發工具 巨集安全性 勾選 啟用所有巨集 點選 確定 即可。本教程操作環境 windows7系統 microsoft office ex...
瀏覽器主頁被360篡改怎麼辦
1.為什麼瀏覽器主頁會被360篡改?1 被惡意軟體篡改 2 安裝了360旗下的軟體,會預設將瀏覽器主頁篡改 2.安裝了魯大師後篡改的瀏覽器主頁如何修改回來?1 開啟魯大師 2 右上角 設定中心 記憶體優化 關閉主頁防護功能 3 小鳥桌布同理,也有乙個主頁防護功能,將其關閉 3.360旗下有哪些軟體?...