小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

JS 無法清除Cookie的解決方法(轉(zhuǎn))

 _小女子_ 2013-08-26

項(xiàng)目中使用sdmenu.js時(shí),需要在登錄時(shí)清除Cookie,而sdmenu默認(rèn)是會(huì)保存Cookie的

 下面是sdmenu.js保存Cookie的方法

document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";

 

下面是我到網(wǎng)上找的清除Cookie的方法,始終都無法刪除Cookie

  1、傳遞Cookie名稱

function deleteCookie(name){
          var date=new Date();
          date.setTime(date.getTime()-10000);
          document.cookie=name+"=v; expire="+date.toGMTString()+"; path=/";

2、循環(huán)刪除所有Cookie

// js 遍歷所有Cookie
function foreach()
{
  var strCookie=document.cookie;
  var arrCookie=strCookie.split("; "); // 將多cookie切割為多個(gè)名/值對(duì)
  for(var i=0;i <arrCookie.length;i++)
{ // 遍歷cookie數(shù)組,處理每個(gè)cookie對(duì)
    var arr=arrCookie[i].split("=");
    if(arr.length>0)
    DelCookie(arr[0]);
}
 
}
function GetCooki(offset)
 
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return decodeURIComponent(document.cookie.substring(offset, endstr));
}
function DelCookie(name)
{
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}

function GetCookie(name)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen)
{
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return GetCooki (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}

 

后來發(fā)現(xiàn)這個(gè)網(wǎng)址,介紹了無法刪除Cookie的原因

http://php./blog/delete-cookie/

 今天遇到一個(gè)cookie的問題: 名叫username的,域?yàn)閣ww.的cookie無法刪除,導(dǎo)致用戶登錄以后無法退出。搞了半天終于發(fā)現(xiàn)問題所在:原來是我關(guān)于cookie的基礎(chǔ)知識(shí)沒搞清楚 。。。。

    Cookie不僅僅有名字和值兩個(gè)屬性,還有域(domain),過期時(shí)間(expires),路徑(path)等屬性。 其中,不同的域、不同的路徑下可以存在同樣名字的cookie。 比如這個(gè)頁(yè)面:  用鼠標(biāo)戳我

    一般我們刪除cookie的方法是用一個(gè)同樣名字、過期時(shí)間為過去某個(gè)時(shí)候的Cookie覆蓋之。 這時(shí)就一定要搞清楚你要?jiǎng)h除的cookie的域和路徑,Cookie域和路徑要一樣才能被覆蓋。 否則產(chǎn)生的效果就是那個(gè)想要被刪除的Cookie具有神奇的生命力,無法被清除~~~

    另外,我發(fā)現(xiàn)在設(shè)置Cookie的時(shí)候,如果沒有指定域名,那么設(shè)置的這個(gè)cookie的域默認(rèn)為當(dāng)前域,比如www.。 如果設(shè)置的時(shí)候指定了某個(gè)域,那么瀏覽器存的時(shí)候會(huì)自動(dòng)在前面加.。比如PHP代碼: setcookie('test','a',0,'www.');  那么 瀏覽器里面存的Cookie的域?yàn)?span style="color: #008000">.www.。 所以,最好的方式是設(shè)置Cookie的時(shí)候怎么寫的,刪除的時(shí)候就怎么寫。  要不就會(huì)出現(xiàn)我遇到的情況: 明明瀏覽器里看有 username=longbill,域?yàn)?span style="color: #008000">www.的Cookie,但是在php里寫 setcookie('username','',time()-1000,'www.','/'); 無法刪除那個(gè)Cookie。 原因就是我刪Cookie的操作其實(shí)上是發(fā)了一個(gè)新的名叫username、值為空、過期時(shí)間為過去1000秒、域?yàn)?span style="color: #008000">.www.、路徑為/的Cookie。這個(gè)Cookie發(fā)到瀏覽器馬上就過期了,什么也看不到。而我要?jiǎng)h除的在http://www./上的cookie還活的好好的。。。

 

 

 

原來是刪除Cookie的代碼中沒有加 路徑(path)

原:

document.cookie = "sdmenu_" + encodeURIComponent(this.menu.id) + "=" + states.join("") + "; expires=" + d.toGMTString() + "; path=/";

新:

         var date=new Date();
          date.setTime(date.getTime()-10000);
          document.cookie=name+"=v; expire="+date.toGMTString()+"; path=/";

除了路徑(path),可能還有域等其它情況,保險(xiǎn)的方式就是 設(shè)置Cookie時(shí)是什么樣式,刪除時(shí)就應(yīng)該是什么樣式,加上expire屬性就行了

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多