前言:在剛完成的畢設專案中,使用到了cookie,主要是用來記錄使用者資訊,方便使用者下次訪問時,在有效期內直接跳過登入頁面進入主介面。總結一下遺留的問題:在刪除同名cookie時,無法全部刪除、覆蓋。
問題:只在登入介面對使用者資訊進行了儲存,但發現在其他 url 介面也會出現cookie儲存著使用者資訊,刪除的時候將cookie資訊的expires
設定為過期時間即可,但只刪除了其中乙個同名的cookie,其他同名的cookie未刪除。
cookie 屬性定義:
設定 cookie 屬性
設定 cookie 屬性值
過期時間的定義(一般在刪除時使用)
路徑path(一般path=』/』)
域(domain)
設定cookie屬性時,讀取出來發現會有多個重複屬性,原因是:cookie屬性可存在於不同的路徑和域下,這將牽扯出乙個問題 ==> 在刪除cookie時,無法精準的定位到對應的cookie。因此要想精準刪除或覆蓋cookie,必須新增當前 cookie 的path 和 domain。如下:刪除cookie就是修改其內容或時間。
document.cookie=
"test=test;expires=fri may 29 2020 12:06:28 gmt; path=/; domain=localhost"
;
例項:刪除相同名稱但不同路徑的客戶端cookie?
只需刪除指定cookie的相同路徑,將其時間過期即可。
document.cookie =
'name=value1; path=/'
;document.cookie =
'name=value2; path=/path/'
;alert(document.cookie)
; // name=value1; name=value2
document.cookie =
'name=; path=/path/; expires=' + new date(0).toutcstring();
alert(document.cookie)
; // name=value1
將其更改為以 / 為路徑過期的cookie,仍然只會過期乙個----對應匹配好的路徑。
document.cookie =
'name=; path=/; expires=' + new date(0).toutcstring();
alert(document.cookie)
; // name=value2
刪除這兩個,必須新增對應cookie的路徑。
docuemnt.cookie =
'name=; path=/; expires=' + new date(0).toutcstring();
docuemnt.cookie =
'name; path=/path/; expires=' + new date(0).toutcstring();
alert(docuemnt.cookie)
;
擴充套件:若要刪除多個cookie,可採用如下方法:
// name為cookie對應的key, paths是路徑集陣列
function expiresallcookie(name, paths)`;
// 精準匹配,新增path
for(let i = 0; i < paths.length; i+++)
}expiresallcookie(
'name', [
'/', '/path/'])
;
儲存或刪除cookie失敗
cookie的基礎知識就不介紹了。需要的戳這裡 問題 儲存cookie所在頁面路由為 storage setcookie,設定path的值為 storage setcookie 刪除cookie所在頁面路由為 storage removecookie,設定path的值為 storage setcoo...
「同名Cookie」的分析
了解cookie的同學應該知道,瀏覽器客戶端是以domain,path,name作為cookie的唯一標識的,只要name domain path中的任何一項不同,cookie就是不能同的。由此便產生了同名cookie。例如有四個cookie如下 d 1 expires sat,23 may 200...
function刪除js操作cookie
ps 今天上午,非常鬱悶,有很多簡單基礎的問題搞得我有些迷茫,哎,幾天不寫就忘。目前又不當coo,還是得用心記 哦!每日一道理 誰說人與人隔著遙遠的重洋,誰說心與心設著堅固的堤防?十六歲的鳥兒飛上天空,總會找到落腳的枝頭。文章結束給大家分享下程式設計師的一些笑話語錄 一條狗在街上閒逛,看見櫥窗裡一張...