關(guān)于cookie

關(guān)于cookie

cookie

  • cookie的定義

    cookie是前端開發(fā)中的一個重要概念。cookie翻譯為“甜餅干”,由W3C提出被各大瀏覽器支持的一種解決HTTP請求無狀態(tài)的方案。
    http的無狀態(tài)是指客服端和服務(wù)端的數(shù)據(jù)交換完畢,連接一旦中斷,再次建立連接時又是一個全新的連接,之前的連接的數(shù)據(jù)會被徹底“遺忘”,這就使服務(wù)端無法弄明白這次的連接是由誰發(fā)起的。

  • cookie的使用場景

當用戶瀏覽網(wǎng)站需要對用戶身份進行判斷,來進行不同響應(yīng)時,可以利用cookie。第一次發(fā)送請求判斷校驗了用戶身份后,把用戶身份存放在cookie中,當下次發(fā)送請求時服務(wù)端就可從cookie中獲取之前存放在cookie中信息,而不用再次經(jīng)過復(fù)雜校驗。
或是用來保存一些用戶在網(wǎng)頁上自定義的一些設(shè)置,在頁面跳轉(zhuǎn)、頁面關(guān)閉后依然能夠記錄這些信息。針對不同用戶的不同操作做出相應(yīng)的響應(yīng)、

  • cookie的前端封裝代碼
var cookie = {
       set:function(key,val,time){//設(shè)置cookie方法
           var date = new Date(); //獲取當前時間
           date.setDate(date.getDate() + time)//設(shè)置cookie過期時間
           document.cookie = key + "=" + val +
            ((time==null) ? '' : ';expires='+time.toGMTString())
       },
       get:function(key){//獲取cookie方法
           /*獲取cookie參數(shù)*/
           //刪除cookie中的所有空格;
           var pureCookie = document.cookie.replace(/\s+/g,"");
           //以分號分割cookie存放在arrCookie中
           var arrCookie = pureCookie.split(";");
           //聲明要輸出的值
           var resultVal;  
   
           //遍歷arrCookie找出與輸入相同的鍵值對,輸出相應(yīng)值
           arrCookie.map((item,index) => {
               var result = item.split("=");
               if(key == result[0]){
                   resultVal = result[1];
                   break;
               }
           })
   
           return resultVal;
       }
} 

代碼中封裝了一個cookie對象,它包含2個方法set和get。

set可以設(shè)置cookie,其中包含3個參數(shù),cookie的屬性名,cookie的值,cookie的過期時間

get可以取出與輸入屬性名相同的cookie值

  • cookie的屬性

  • max-age(expires):指定cookie的有效期,單位是秒,表示cookie存在的秒數(shù)

    1. max-age為負:表示此cookie只在本窗口和子窗口有效
    2. max-age為0:表示刪除此cookie
  • domain:可以訪問該cookie的域名。如果設(shè)置為“.google.com”,則所有以“google.com”結(jié)尾的域名都可以訪問該Cookie。注意第一個字符必須為“.”

  • path:可以訪問該cookie的域名。如果設(shè)置為“/”,則該域名下的所有路徑都可以訪問該Cookie。注意最后一個字符必須為“/”

  • 查看cookie的方法:


    help.jpg
  • cookie存在的問題

  • 存儲大小只有4kb

  • 每次發(fā)送http請求時cookie都會一并發(fā)送,浪費帶寬

  • HTML5的 localStorage和sessionStorage有了更好的解決辦法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • Cookie概述 HTTP是一種無狀態(tài)的請求/響應(yīng)協(xié)議,用戶通過瀏覽器訪問Web站點后,Web服務(wù)端沒有可用信息來...
    jemmm閱讀 1,311評論 0 0
  • 寫在前面 在開始之前,先要理解會話(Session)的含義。Session跟蹤是web中常用的技術(shù),用來跟蹤用戶整...
    StarGazer_13閱讀 517評論 0 0
  • 01 每個人都是一座孤島。 如果說整個世界是一片蔚藍海岸,那么每個人其實都是一座孤島。 唯一不同的是,有些人選擇了...
    南方惟越閱讀 368評論 2 4
  • 晚上, 家人都睡下了, 忽然就沒了睡意. 泡了一杯茶來到露臺上, 想一個人安靜一下. 茉莉花的香味隨著一股暖流順喉...
    白鹿鯨閱讀 1,011評論 0 3

友情鏈接更多精彩內(nèi)容