亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > cookie的簡單介紹

cookie的簡單介紹

來源:千鋒教育
發布人:qyf
時間: 2022-09-29 17:12:51 1664442771

  在正式介紹cookie之前我們要先來說一說網絡通訊協議

  首先:什么是網絡通訊協議?所謂協議一般就是甲乙雙方溝通要遵循的規則與方式,那么通訊協議就是通訊雙方要遵循的規則,網絡通訊協議則是計算機雙方傳輸數據所要遵循的協議,瀏覽網頁時, 一般使用http或者https,而它們都是基于TCP/IP協議的。

  TCP/IP協議是面向連接的

  在發送數據之前,都必須先在雙方之間建立一條連接。在TCP/IP協議中,TCP 協議提供可靠的連接服務,連接是通過三次握手進行初始化的,如下圖:

圖片 1

  客戶端要向服務器發送請求,首先會發送一個請求連接,這是第一次握手;

  當服務器收到這個請求以后返回給客戶端一條消息,這是第二次握手;

  然后客戶端再把確認消息發給服務器,這是第三次握手;

  經過這三次握手客戶端與服務器之間的連接就建立起來了。

  就像打電話一樣,客戶端向服務器撥通電話,服務器接起電話,說了一句:“喂?”,然后客戶端收到了這句“喂”,再跟服務器說一聲“喂!”,連接就建立好了,可以愉快的通話了

  建立連接需要經過三次握手,那數據傳輸結束以后呢?我們打電話事情說完了要掛掉電話要經歷一個怎樣的過程?可能對話是下面這樣的:

  A:“我掛了”

  B:“好”

  A:“拜拜”

  B:“拜拜,我也掛了”

  A:“好,拜拜”

  B:“嗯嗯,拜拜,掛了”

  A:“好,拜拜”

  B:“拜拜”

  有點搞笑 ,經過好多次消息確認好不容易才能把電話掛掉,但這并不是無聊,而是要互相確認對方是否真的已經準備斷開連接了,那么我們的TCP/IP協議也會考慮到這一點,要斷開連接會經過四次揮手,如下圖:

圖片 2

  數據傳輸結束時,客戶端向服務器發送一條結束的消息,服務器收到消息后會馬上返回給客戶端確認消息,并隨后發送一條“我也結束了”的消息,當客戶端收到這條消息以后會響應給服務器確認消息,服務器收到這條確認消息以后就會關閉,而客戶端則會等待兩個單位時間之后關閉。注意這里客戶端并不是立馬關閉,而是會等帶兩個單位時間,為什么是兩個單位時間呢?首先,所謂的單位時間指的是一次前后端數據傳輸所花費的時間,這里要等待兩個單位時間是因為客戶端要等數據發送到服務器以后確認收不到數據返回,這一來一去就是兩個單位時間了,因為如果這個時候服務器并沒有結束的話會再次給客戶端響應,而客戶端在兩個單位時間后收不到響應則代表本次數據傳輸正式結束。

  下面貼出兩張動圖:

圖片 3

圖片 4

  這兩張動圖對于計算機專業的讀者可以嘗試探究,本文不做詳細展開

  http無狀態

  HTTP協議, 使我們用戶上網常見的協議, 簡單的理解, 它是基于TCP/IP協議改造加工出來的,也就是說每一個http請求都會通過三次握手建立連接,傳輸數據, 然后四次揮手斷開連接.

  例如當你登錄淘寶的時候, 你的瀏覽器跟淘寶服務器之間就行了 一個 http鏈接.

  然后, 當首頁數據加載完成, 鏈接就斷開了.

  這時服務就無法保存你的狀態. 你瀏覽了什么商品? 購物車加了幾個東西? 有沒有關閉瀏覽器? 服務器統統不知道了

  所以, 我們說:http協議是一種無狀態協議,這里的無狀態指的是無法保存狀態,因為一旦數據傳輸結束連接就會斷開,就無法獲取一些狀態了,這樣設計的好處就是可以節約資源,需要的時候才發出請求,但是也會造成一些困擾,

  尤其是關于身份驗證. 用戶在登錄頁面完成了登錄,那么接下來就會回到首頁或者其他頁面進行操作,但問題是這個時候登錄的這次http請求已經結束了,所以當完成頁面跳轉之后就取不到登錄狀態了,那怎么辦?再登錄一次?

  當你反復使用http協議跟服務器建立鏈接的時候, 服務器怎么才能知道, 你是一個登錄過的合法用戶?? 為了解決這個問題, 出現了cookie技術.

  cookie

  cookie稱之為會話跟蹤技術,顧名思義,就是在一次會話中跟蹤記錄一些狀態。首先,所謂的”會話“指的就是從瀏覽器打開一個網站到訪問它的其他網頁直到瀏覽器關閉的這個過程。

  cookie就可以在一次會話從開始到結束的整個過程,全程跟蹤記錄客戶端的狀態(例如:是否登錄、購物車信息、是否已下載、是否 已點贊、視頻播放進度等等)。

  cookie是服務器存儲在客戶端本地的一個文件. 它就好比服務器發給客戶端的一個身份標識, 有了這個身份牌, 只要客戶端隨身攜帶這個身份牌. 服務器就能識別我們的身份了

  cookie的特點

  1. 只能存儲文本

  2. 單條存儲有大小限制4KB左右

  3. 數量限制(一般瀏覽器,限制大概在50條左右)

  4. 讀取有域名限制:不可跨域讀取,只能由來自 寫入cookie的 同一域名 的網頁可進行讀取。簡單的講就是,哪個服務器發給你的cookie,只有哪個服務器有權利讀取(身份牌是我的,當然只有我能讀取,你媳婦兒的手機自動連接了鄰居老王家的wifi,你知道這意味著什么嗎?)

  5. 時效限制:每個cookie都有時效,默認的有效期是,會話級別:就是當瀏覽器關閉,那么cookie立即銷毀,但是我們也可以在存儲的時候手動設置cookie的過期時間

  6. 路徑限制:存cookie時候可以指定路徑,只允許子路徑讀取外層cookie,外層不能讀取內層。一般cookie都存在項目的根目錄,這樣就可以避免這種問題。

  cookie的使用

  其實, 如果是單純的身份驗證場景下, 前端開發是用不到cookie的

  從服務器發送cookie給瀏覽器, 瀏覽器保存cookie, 到瀏覽器每次發送請求 ,攜帶著cookie文件, 這些事情瀏覽器全部都可以自己完成. 根本不需要我們前端開發人員參與.

  但我們有時也會利用cookie, 在前端存儲一些狀態信息.

  比如某個視頻看到了32分15秒.

  我們可以通過前端操作, 直接將這個數據保存在本地cookie文件中

  下次打開網站, 我們再次讀取這個信息

  然后直接向服務器請求32分16秒的視頻內容.

  前端如何通過JS操作cookie

  cookie的使用方式很簡單 ,系統提供的只有一個屬性 document.cookie,無論是存還是取或者其他操作都是通過這一個屬性來完成(注:cookie是http協議下的技術,所以不要用file的方式打開本地html文件測試cookie,雖然由部分瀏覽器也在file協議下實現了cookie,但是不推薦這么做)。

  首先,我們來看看如何存:

  document.cookie = 'username=dary' // 存一條username為dary的cookie

圖片 5

  但是如果當我們要存一條中文的cookie,比如:username=張三,在部分低版本瀏覽器就會遇到一些位置錯誤,這時就可以使用 encodeURIComponent 編碼對中文進行編碼:

  document.cookie = `username=encodeURIComponent('大林')`

圖片 6

  可以看到,中文內容已經被編碼了,以后取得時候我們可以通過decodeURIComponent 方法進行解碼,下文會提到

  cookie的時效性

  現在我們回頭去看看上面我們存過的cookie,其中有Expires/max-Age選項,這一項指的就是cookie的有效期,我們可以看到是session,代表會話期,也就是默認的會話結束cookie失效,這時我們重啟瀏覽器就看不到這條cookie了。

圖片 7

  除了默認的會話過期我們還可以手動設置cookie的過期時間,比如:7天后過期

  var date = new Date()

  date.setDate(date.getDate() + 7)

  document.cookie = `username=${encodeURIComponent('大林')};expires=${date.toUTCString()}`

圖片 8

  我們可以看到過期時間已經是7天以后了,這里我用了toUTCString()方法轉成了標準時區,所以比北京時間快8個小時,這時我們關閉瀏覽器再次打開,仍然可以看到這條cookie

  cookie的存儲路徑

  我們來測試一下路徑,隨便進入項目中某一個目錄或者新建一個目錄,然后把一下代碼放進去執行

  document.cookie = 'username=dary'

圖片 9

  我們可以看到,path不再是之前的 / 了,而是當前目錄,這時我們再回到首頁,你會發現,這條cookie不見了,因為外層時訪問不了內層目錄存的cookie的。

  所以我們一般存cookie都會這么寫:

  document.cookie = 'username=dary;path=/'

  不管當前目錄是誰統一存根目錄,這樣項目中任意位置都可以訪問這一條cookie,這就perfect 啦!

  由此:我們可以封裝一個存儲cookie的方法如下:

  /** 存一條cookie

  * @param {string} key 要存的cookie的名稱

  * @param {string} value 要存的cookie的值

  * @param {object} [options] 可選參數,過期時間和目錄,如:{ path: '/', expires: 7 }存根目錄7天過期的cookie

  */

  function setCookie (key, value, options) {

  var str = `${key}=${encodeURIComponent(value)}`

  // 先判斷options是否傳進來了

  if (options) {

  // 如果傳進來了再判斷有哪個屬性

  if (options.path) {

  // 路徑拼接進去

  str += `;path=${options.path}`

  }

  if (options.expires) {

  var date = new Date()

  // 日期設置為過期時間

  date.setDate(date.getDate() + options.expires)

  str += `;expires=${date.toUTCString()}`

  }

  }

  document.cookie = str

  }

  取cookie

  現在我們掌握了如何存cookie,接下來看看怎么取吧

  取cookie同樣使用document.cookie這個屬性:

  console.log(document.cookie) // username=dary

  但是如果我們在一個網站里存了多條cookie,這個時候得到的結果就是

  console.log(document.cookie) // username=dary; age=18

  多條cookie之間以; 隔開,注意:這里是分號和一個空格,這個對我們拆開每一條cookie非常重要。所以我們現在希望能把cookie每一條拆開,得到一個對象,這樣就可以取得某一條cookie的值了,所以我們可以封裝一個獲取cookie的方法如下:

  /** 獲取某一條cookie

  * @param {string} key 要獲取的cookie的名稱

  * @retrun {string} 當前這條cookie的值

  */

  getCookie (key) {

  var str = document.cookie

  var arr = str.split('; ')

  var obj = new Object()

  arr.forEach(item => {

  var subArr = item.split('=')

  obj[subArr[0]] = decodeURIComponent(subArr[1])

  })

  return obj[key]

  }

  刪除cookie

  刪除cookie的方式特別簡單,我們只需要把cookie的過期時間設置為已經過去了的時間就行了,這個時候瀏覽器一看,誒?這條cookie不是已經過期了么?就只能把它刪掉了 ,方法如下:

  /** 刪一條cookie

  * @param {string} key 要刪的cookie的名稱

  * @param {path} [path] 可選參數,要刪的cookie的所在的路徑,如果就是當前路徑這個參數可以不傳

  */

  function removeCookie (key, path) {

  var date = new Date()

  date.setDate(date.getDate() - 1) // 過期時間設置為昨天

  var str = `${key}='';expires=${date.toUTCString()}`

  if (path) {

  str += `;path=${path}`

  }

  document.cookie = str

  }

  修改cookie

  重新存一下把之前的覆蓋掉就是修改了cookie了

  最后附上一個cookie方法,既可以完成存也可以取,甚至可以刪

  // 通過判斷有沒有傳第二個參數value來決定是存還是取

  // 這個方法也可以用域刪cookie,比如:cookie('username', '', { expires: -1, path: '/' })

  function cookie (key, value, options) {

  if (value) {

  var str = `${key}=${encodeURIComponent(value)}`

  if (options) {

  if (options.path) {

  str += `;path=${options.path}`

  }

  if (options.expires) {

  var date = new Date()

  date.setDate(date.getDate() + options.expires)

  str += `;expires=${date.toUTCString()}`

  }

  }

  document.cookie = str

  } else {

  var str = document.cookie

  var arr = str.split('; ')

  var obj = new Object()

  arr.forEach(item => {

  var subArr = item.split('=')

  obj[subArr[0]] = decodeURIComponent(subArr[1])

  })

  return obj[key]

  }

  }

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
亚洲欧美成人精品香蕉网| 我的真實亂倫故事| 无码中文精品视视在线观看| 亚洲ΑV久久久噜噜噜噜噜| 在线精品国产一区二区三区| XXXXX69HD护士19学生| 国产高清在线观看AV片| 久久精品AⅤ无码中文字字幕蜜桃| 免费人成视在线观看不卡| 日本XXXXX九色视频在线观看| 无套中出丰满人妻无码| 一本色道无码道DVD在线观看| 巴西FREE性VIDEO极品| 国产无套码AⅤ在线观看| 久久婷婷五月综合色俺也想去| 人人妻人人狠人人爽天天综合网| 无码专区AAAAAA免费视频| 伊人久久大香线蕉AV影院| 成人综合伊人五月婷久久| 狠狠色噜噜狠狠狠888777米| 免费又黄又硬又爽大片免费| 同桌上课脱裙子让我帮他自慰 | 动漫成人无码免费视频在线播 | 精品国产AⅤ一区天美传媒 | 久久久久久久精品成人热色戒| 人妻AV无码一区二区三区| 亚洲AV成人深夜一区午夜网站| 中国熟妇色XXXXⅩ老妇| 国产AV高清无亚洲| 久久综合九色欧美综合狠狠 | 欧美VA亚洲VA日韩VA| 五十路丰满熟女av名单大全| 在线亚洲熟妇一区二区三| 国产疯狂XXXⅩ乱大交| 麻豆精品久久久久久中文字幕无码| 色欲色香天天天综合网站免费| 亚洲乱码尤物193YW最新地址| ぱらだいす天堂中文网.WWW | 亚洲第一无码精品一区| YYYY111111少妇影院| 黑人大雞巴ⅩⅩⅩ| 人妻少妇HEYZO无码专区| 亚洲国产综合精品 在线 一区| JAPANESE军人强迫| 精品国产AⅤ一区二区三区| 日产无人区一线二线三线最新版| 亚洲欧美一区二区成人片婷婷 | JlZZJlZZ日本熟丰满人妻| 黑人巨大超大VIDEOSGRA| 人妻中文字幕乱人伦在线| 亚洲天天做日日做天天欢| 丰满少妇偷人51视频在线观看| 久久亚洲精品无码AⅤ大香| 我故意没有穿内裤坐公车让| 37大但文体艺术A级都市天气 | 欧美亚洲国产片在线播放 | 无码人妻精品一区二区蜜桃AV| 337P西西人体大胆瓣开下部 | 欧美狂野乱码一二三四区| 亚洲丰满熟妇在线播放电影全集| 成人片黄网站色大片免费观看CN | 极品少妇流白浆草莓视频| 视频免费网站入口| ASS鲜嫩鲜嫩PICS日本| 久久AV无码精品人妻系列| 玩丰满少妇XXXXXⅩ性麻| JAGNEXSMAX在日本| 久久亚洲精品无码| 亚洲AV无码专区国产乱码4SE| 俄罗斯VODAFONEWIFI| 女朋友喊疼男生的心理活动知乎 | 985大学排名一览表| 久久精品人人爽人人爽| 性欧美ⅩXXXX极品少妇| 粗长挺进新婚人妻小怡| 男生把手放进我内裤揉摸好爽| 亚洲老熟女 @ TUBEUM| 国产精品久久久久精品三级卜| 全免费A级毛片免费看| 中国人も日本人も汉字を| 精品国产第一福利网站| 无码人妻久久久一区二区三区| 成人区人妻精品一区二区三区| 某处紧密的结合在一起| 亚洲中文AⅤ中文字幕| 国产一区二区无码蜜芽精品| 少妇无码太爽了不卡视频在线看 | 日产中文字幕在线精品一区| 99久久99久久久精品齐齐综合 | 黑人入室强丰满人妻| 无码人妻久久1区2区3区| 妇女性内射冈站HDWWWOOO| 人妻无码一区二区三区视频| 2019NV天堂香蕉在线观看| 久久综合噜噜激激的五月天| 亚洲熟妇无码V在线观看| 狠狠色综合7777久夜色撩人 | 狠狠色噜噜狠狠狠狠色综合久AV| 无码中文AV波多野结衣| 公和熄小婷乱中文字幕| 色欲香天天天综合网站无码| 被强迫各种姿势侵犯N白月视频| 哦┅┅快┅┅用力啊┅┅动态图 | 麻豆传播媒体2023最新网站 | 亚洲VA中文字幕无码久久不卡 | 丁香五月开心婷婷激情综合| 琪琪777午夜理论片在线观看播| 91人妻人人妻人人爽人人精品| 乱码一二三乱码又大又粗| 野花电影在线观看免费720| 精品一区二区三区免费乱码视频 | 天美传媒MV免费观看| 东京热无码人妻一区二区AV| 日韩视频一区二区三区| 菠萝菠萝蜜菠萝菠萝5| 日本免费AⅤ欧美在线观看| 啊灬啊灬啊灬快灬高潮了电影片段| 欧美成人免费一区| AV狠狠色丁香婷婷综合久久| 欧美人成人精品视频在线观看| 99久久免费国产精品四虎| 男人添女人下部高潮全视频| 97人澡人人添人人爽欧美| 欧美大屁股妞性潮喷ⅩXX| AV老司机福利精品导航| 欧美性性性性性色大片免费的| 办公室揉弄震动嗯~动态图| 日本区一视频.区二视频| 丁香五月婷激情综合第九色| 天堂VA在线高清一区| 国产精品视频第一区二区三区| 无码专区6080YY免费视频| 黑色丝袜老师自慰喷水浪潮免费| 亚洲韩国精品无码一区二区| 久久久久 亚洲 无码 AV 专| 又湿又黄裸乳漫画无遮挡网站| 蜜臀AV一区二区三区四区| JAVAPARSER偷乱中国| 日日狠狠久久偷偷色| 国产精品成人A区在线观看| 亚洲AⅤ无码日韩AV无码网站| 精品国产熟女成人AV| 亚洲熟妇AV日韩熟妇AV| 蜜桃AV免费一区二区三区| BT天堂资源种子在线| 日韩人妻中文字幕2021视频| 国产精品久久久久7777按摩| 亚洲AV综合AV一区二区三区| 久久精品国产精品亚洲毛片| 在线看AV片的网站| 人妻丰满熟妇无码区免费| 国产CHINASEX对白VID| 亚洲AV成人片色在线观看| 久久精品中文字幕无码| 97人妻人人揉人人躁人人| 日韩免费无码专区精品观看 | 毛茸茸BBWBBW中国妓女| 啊灬啊灬快点灬用力岳| 无码AV不卡一区二区三区| 精品亚洲成在人线AV无码| 77777亚洲午夜久久多喷| 日韩在线看片免费人成视频播放| 国产乱子伦60女人的皮视频| 亚洲熟妇真实自拍另类| 欧美老妇交乱视频在线观看| 公粗挺进了我的密道在线观看| 亚洲AV成人片乱码色午夜| 毛片无码免费无码播放| 成人麻豆精品激情视频在线观看| 天天躁夜夜躁狠狠夜夜| 精品久久久久久亚洲综合网| 4399理论片午午伦夜理片| 熟女高潮喷水一区二区三区| 河南妇女毛深深的沟WCD| 69美女黑人做受XXXXXⅩ| 僧侣と交わる色欲の夜に| 精品人妻AV一区二区三区不卡| 最新无码国产在线视频2021| 色综合色综合色综合色欲 | 日本大学学校AAAAA| 国产又黄又爽又刺激的免费网址| 一面亲上边一面膜下边| 日韩精品免费无码专区| 激情无码白丝人妻又大又粗| 99精产国品一二三产区区| 无码G0G0大胆啪啪艺术| 邻居少妇张开双腿让我爽一夜| 粗大猛烈进出高潮视频| 亚洲美女高潮久久久久| 人妻无码ΑV中文字幕久久| 黑人双人RAPPER的特点 | 欧美人与性动交Α欧美精品| 国产精品伦一区二区三级视频| 尤物娇妻被NP高H| 双方夫妻一起互动交流做| 久久久久人妻一区精品色| 丰满爆乳BBWBBWBBW| 野花 高清 中文 免费 日本| 熟妇人妻少妇精品欧美视频 | 韩国午夜理伦三级在线观看仙踪林|