js 刪除 (同名)cookie 失敗

2021-10-06 15:00:19 字數 1987 閱讀 8788

前言:在剛完成的畢設專案中,使用到了cookie,主要是用來記錄使用者資訊,方便使用者下次訪問時,在有效期內直接跳過登入頁面進入主介面。總結一下遺留的問題:在刪除同名cookie時,無法全部刪除、覆蓋。

問題:只在登入介面對使用者資訊進行了儲存,但發現在其他 url 介面也會出現cookie儲存著使用者資訊,刪除的時候將cookie資訊的expires設定為過期時間即可,但只刪除了其中乙個同名的cookie,其他同名的cookie未刪除。

cookie 屬性定義:

設定 cookie 屬性

設定 cookie 屬性值

過期時間的定義(一般在刪除時使用)

路徑path(一般path=』/』)

域(domain)

設定cookie屬性時,讀取出來發現會有多個重複屬性,原因是:cookie屬性可存在於不同的路徑和域下,這將牽扯出乙個問題 ==> 在刪除cookie時,無法精準的定位到對應的cookie。

刪除cookie就是修改其內容或時間。

因此要想精準刪除覆蓋cookie,必須新增當前 cookie 的path 和 domain。如下:

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,還是得用心記 哦!每日一道理 誰說人與人隔著遙遠的重洋,誰說心與心設著堅固的堤防?十六歲的鳥兒飛上天空,總會找到落腳的枝頭。文章結束給大家分享下程式設計師的一些笑話語錄 一條狗在街上閒逛,看見櫥窗裡一張...