前幾天在項目中須要在瀏覽器關閉時刪掉指定的cookie,但當時一時鑽入死衚衕了,只想着在瀏覽器關閉時使用js中的onunload或onbeforeunload事件來刪除。但當時試了不少種方法,怎麼都無法刪掉這個cookie。如下爲js操做cookie的代碼。(摘自網上)html
//取得項名稱爲offset的cookie值 function GetCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } //取得名稱爲name的cookie值 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 GetCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } //刪除名稱爲name的Cookie function DeleteCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 1); var cval = GetCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); } //清除COOKIE function ClearCookies() { if(confirm('你肯定要清空全部COOKIE嗎?')) { var temp=document.cookie.split(";"); var ts; for (var i=0;;i++) { if(!temp[i])break; ts=temp[i].split("=")[0]; DeleteCookie(ts); } alert('COOKIE已清除!'); } }
後來才猛然想起,若是我在後臺添加cookie到響應頭時,就不指定過時時間,那麼這個cookie就是一個會話型cookie,當瀏覽器關閉時,這個cookie就會被瀏覽器自動刪除。
瀏覽器
但當時我就想不明白爲何使用js刪除就不行,因而就跑到網上去問。終於有大神給出了答案,原來在後臺添加cookie時,設置了cookie的HttpOnly屬性爲true,這樣當前cookie就不能經過客戶端瀏覽器的腳原本訪問。我後來本身去試了一下,果真如此。固然js刪除cookie失敗的可能緣由並不僅於此,具體參考如下博文:http://www.cnblogs.com/gossip/archive/2011/12/06/2278282.htmlcookie