溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

JavaScript cookie的使用方法

發(fā)布時(shí)間:2020-07-28 13:58:28 來(lái)源:億速云 閱讀:130 作者:小豬 欄目:web開(kāi)發(fā)

這篇文章主要講解了JavaScript cookie的使用方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

什么是cookie?

cookie 是本地計(jì)算機(jī)的臨時(shí)存儲(chǔ)。

作用:在瀏覽器中進(jìn)行數(shù)據(jù)的存儲(chǔ),用戶(hù)名、密碼(比如:保存頁(yè)面信息,自動(dòng)登錄等)。

特點(diǎn):

  • cookie需要在服務(wù)器環(huán)境下運(yùn)行;
  • cookie的容量在4kb左右,限制為每個(gè)域名50個(gè)cookie個(gè)數(shù)(IE),不同瀏覽器容量和個(gè)數(shù)不同;
  • cookie以字符串類(lèi)型存儲(chǔ),不同域名存儲(chǔ)的數(shù)據(jù)是無(wú)法共享;
  • cookie默認(rèn)是臨時(shí)存儲(chǔ)的,當(dāng)瀏覽器關(guān)閉時(shí),自動(dòng)銷(xiāo)毀;
  • cookie可以被禁用也可以刪除,且安全性不高。
  • 可以對(duì)cookie值進(jìn)行加密(MD5);

讀取和設(shè)置cookie

document.cookie = "user=123456";
console.log(document.cookie); //user=123456

使用f12查看當(dāng)前頁(yè)面存儲(chǔ)的cookie

JavaScript cookie的使用方法

注意:

在打開(kāi)網(wǎng)址時(shí)或者提交表單時(shí)自動(dòng)裹挾著cookie數(shù)據(jù)發(fā)送到服務(wù)器,并且服務(wù)端程序可以 繼續(xù)裹挾著新的cookie內(nèi)容存儲(chǔ)在你的電腦的cookie中。

設(shè)置cookie的生存期

  格式:document.cookie = “名稱(chēng)=值;expires=” + 時(shí)間;(時(shí)間必須是一個(gè)字符串)。

var date=new Date();
date.setHours(date.getHours()+1);//設(shè)置1小時(shí)的生存期
// document.cookie="a=3"; //先存入a=3,只運(yùn)行第一次
console.log(document.cookie);
var a=Number(document.cookie.split("=")[1]);
a++;
document.cookie="a="+a+";expires="+date.toUTCString();

  上面代碼表示:設(shè)置cookie在當(dāng)前時(shí)間的一個(gè)小時(shí)后過(guò)期,第一次運(yùn)行先存入a為3的值,然后把cookie的值從字符串轉(zhuǎn)為數(shù)值型,再進(jìn)行累加,每次設(shè)置生存期都要把data對(duì)象轉(zhuǎn)為字符串類(lèi)型(toUTCString)。

在生存期內(nèi)的cookie,關(guān)閉頁(yè)面不會(huì)銷(xiāo)毀,生存期結(jié)束,關(guān)閉頁(yè)面銷(xiāo)毀cookie;

cookie存儲(chǔ)多個(gè)數(shù)據(jù)

var obj={
      user:"xietian",
      age:30,
      sex:"男"
    }
    function setCookie(obj,date){
      for(var prop in obj){
        document.cookie=prop+"="+obj[prop]+(date ? ";expires="+date.toUTCString() : "");
      }
    }
    var date=new Date();
    date.setFullYear(2021); 
    setCookie(obj,date);

使用reduce獲取多個(gè)cookie值

var o=getCookie();
   console.log(o);
    function getCookie(){
      return document.cookie.split("; ").reduce((value,item)=>{
          var arr=item.split("=");
          value[arr[0]]=isNaN(arr[1]) ? arr[1] : Number(arr[1]);//數(shù)字(年齡)需要轉(zhuǎn)為數(shù)值型
          return value;
      },{});
    }

關(guān)于cookie安全

  XSS攻擊:XSS攻擊通常指的是通過(guò)利用網(wǎng)頁(yè)開(kāi)發(fā)時(shí)留下的漏洞,通過(guò)巧妙的方法注入惡意指令代碼到網(wǎng)頁(yè),使用戶(hù)加載并執(zhí)行攻擊者惡意制造的網(wǎng)頁(yè)程序(百度百科)。

  XSS攻擊需要具備的條件:

1. 必須是同一個(gè)域當(dāng)中頁(yè)面的表單提交,必須有文本內(nèi)容提交

2. 提交的內(nèi)容需要被放置在頁(yè)面中,例如評(píng)論等內(nèi)容

3. 在提交的文本中出現(xiàn)script標(biāo)簽,并且這個(gè)標(biāo)簽沒(méi)有被替代,直接放入在頁(yè)面中

4. 這個(gè)頁(yè)面可以被所有用戶(hù)查看到

5. 這個(gè)script標(biāo)簽具備一定的盜竊cookie特征

  解決辦法

提交頁(yè)面時(shí)將script標(biāo)簽過(guò)濾再提交;

但可以通過(guò)插入圖片的超鏈接,點(diǎn)擊是執(zhí)行JavaScript腳本; 遇到這種時(shí)就需要將JavaScript腳本替換

看完上述內(nèi)容,是不是對(duì)JavaScript cookie的使用方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI