cookie

計(jì)算機(jī)網(wǎng)絡(luò)

概述:將不同的計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)應(yīng)用使用對(duì)應(yīng)的傳輸介質(zhì)進(jìn)行聯(lián)通。

關(guān)鍵名詞:
  • 網(wǎng)絡(luò)應(yīng)用(比如:校園網(wǎng)撥號(hào)、寬帶連接)
  • 傳輸介質(zhì)(比如:網(wǎng)線、wifi)
網(wǎng)絡(luò)協(xié)議及其構(gòu)成:

概述:網(wǎng)絡(luò)OSI構(gòu)成由7層構(gòu)成。
分別是:

  • 物理層
  • 數(shù)據(jù)鏈路層
  • 網(wǎng)絡(luò)層
  • 傳輸層
  • 會(huì)話層
  • 表示層
  • 應(yīng)用層


    image.png
TCP與UDP:
  1. TCP使用對(duì)應(yīng)的連接進(jìn)行通信的。(就是說(shuō)對(duì)應(yīng)的通信設(shè)備一定要建立連接才行,如:外賣配送)
  2. UDP使用丟包的形式進(jìn)行通信的。(就是說(shuō)對(duì)應(yīng)的服務(wù)端只需要將對(duì)應(yīng)的數(shù)據(jù)報(bào)包發(fā)送就行,客戶端去接對(duì)應(yīng)的數(shù)據(jù)報(bào)包,如:菜鳥驛站)
應(yīng)用層的相關(guān)協(xié)議:
  • FTP 文件傳輸協(xié)議
  • TFTP 簡(jiǎn)單的文件傳輸協(xié)議
  • SNMP 郵件傳輸協(xié)議
  • HTTP 超文本傳輸協(xié)議 (基于TCP/IP)
  • HTTPS 安全的超文本傳輸協(xié)議 (基于TCP/IP)
  • P2P 金融傳輸協(xié)議
  • NFS 藍(lán)牙傳輸協(xié)議
  • DNS 域名傳輸協(xié)議
HTTP與HTTPS:
  1. HTTP采用明文傳輸,這種方式不安全,它的數(shù)據(jù)能獲取,也能篡改
  2. HTTPS采用密文傳輸,這種方式里面采用了openssl加密,里面有對(duì)稱加密、非對(duì)稱加密和CA證書。

前端和后端:

  • 前端是提供對(duì)應(yīng)的頁(yè)面渲染操作(渲染頁(yè)面)
  • 后端是提供對(duì)應(yīng)業(yè)務(wù)操作(提供數(shù)據(jù))
    注意:后端和前端建立連接的根本是網(wǎng)絡(luò)傳輸協(xié)議 (HTTP和HTTPS)。
    image.png

HTTP的幾大特性:

  • 無(wú)狀態(tài)(沒(méi)有狀態(tài)):無(wú)狀態(tài)是指協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力沒(méi)有辦法區(qū)分對(duì)應(yīng)的用戶。(如:現(xiàn)在a用戶登錄淘寶,b用戶也登錄淘寶,a用戶和b用戶他沒(méi)有辦法區(qū)分,會(huì)導(dǎo)致a用戶拿到了b用戶的頁(yè)面,b用戶拿到了a用戶的頁(yè)面的問(wèn)題)
  • 無(wú)連接:無(wú)連接的含義是限制每次連接只處理一個(gè)請(qǐng)求。就是建立完連接后發(fā)送完數(shù)據(jù)就會(huì)馬上斷掉,連接不能保持。每次連接完畢,連接會(huì)馬上斷掉。(采用這種方式可以節(jié)省傳輸時(shí)間)
  • 長(zhǎng)連接/短連接
解決HTTP的無(wú)狀態(tài)問(wèn)題:
  1. 因?yàn)閷?duì)應(yīng)的http的無(wú)狀態(tài)問(wèn)題導(dǎo)致我們可能在進(jìn)行某項(xiàng)操作的時(shí)候,對(duì)應(yīng)的后端不能準(zhǔn)確的區(qū)分對(duì)應(yīng)的訪問(wèn)者,這個(gè)時(shí)候我們就需要給每個(gè)對(duì)應(yīng)的連接添加一個(gè)標(biāo)識(shí)(sessionID)。
  2. cookie就是用來(lái)存放sessionID。每次請(qǐng)求都要帶上cookie才能區(qū)分對(duì)應(yīng)的訪問(wèn)者。那么我們解決http的無(wú)狀態(tài)問(wèn)題就是通過(guò)發(fā)送對(duì)應(yīng)的cookie來(lái)解決的,這個(gè)cookie里面會(huì)帶上一個(gè)sessionID來(lái)用于區(qū)分。cookie是存放在瀏覽器上的。

Cookie

概述:cookie是為了解決http的無(wú)狀態(tài)問(wèn)題產(chǎn)生的,cookie里面以存儲(chǔ)sessionID的方式來(lái)解決http的無(wú)狀態(tài)問(wèn)題,cookie是存放在瀏覽器上的。

cookie的特性:
  • 存儲(chǔ)在瀏覽器上的
  • cookie的存儲(chǔ)大小一般是4kb左右
  • cookie會(huì)隨請(qǐng)求而發(fā)送
  • cookie可以跨域
  • cookie可以設(shè)置過(guò)期時(shí)間
  • cookie可以被篡改也可以偽造(cookie不安全)
cookie的存儲(chǔ)格式:
  • key=value 鍵值對(duì)象
  • expires 過(guò)期時(shí)間設(shè)置
  • path 在對(duì)應(yīng)的路徑下才攜帶cookie
  • domain 跨域的域名
  • secure 安全(寫了代表安全,沒(méi)寫代表不安全)
key=value;expires=日期;path=地址;domain=域名;secure安全
cookie的相關(guān)操作:

概述:cookie是一個(gè)位于瀏覽器上的容器,具備增刪改查的方法(document.cookie || chrom.cookies)。

  • 增加方法(給對(duì)應(yīng)的cookie里面進(jìn)行賦值)
    //對(duì)應(yīng)cookie進(jìn)行賦值 增操作
    var date = new Date(2022,10,22)
    document.cookie = `name=123;expires=${date}`
    
  • 刪除方法 (設(shè)置對(duì)應(yīng)的過(guò)期時(shí)間)
    //刪除操作 就是設(shè)置過(guò)期時(shí)間為對(duì)應(yīng)的當(dāng)前時(shí)間 并不會(huì)馬上刪除 而是對(duì)應(yīng)的瀏覽器關(guān)閉以后才會(huì)刪除
    //如果當(dāng)前時(shí)間已經(jīng)過(guò)了 那么對(duì)應(yīng)的cookie還是會(huì)存在
    var date = new Date()
    document.cookie = `name=jack;expires=${date}`
    
  • 修改方法(給對(duì)應(yīng)的cookie里面的存在的key進(jìn)行重新賦值)
    //修改就對(duì)于已經(jīng)有的key進(jìn)行重新賦值操作
    //如果沒(méi)有設(shè)置過(guò)期時(shí)間 那么默認(rèn)的過(guò)期時(shí)間是session session的過(guò)期時(shí)間是瀏覽器關(guān)閉就清除
    document.cookie = 'name=jack'
    
  • 查詢方法(不賦值直接讀取對(duì)應(yīng)的cookie)
    //查詢cookie 不賦值就是查詢 顯示的時(shí)候只會(huì)顯示對(duì)應(yīng)的key=value 其他并不會(huì)顯示
    console.log(document.cookie);
    
cookie的相關(guān)操作的封裝:
// 封裝cookie相關(guān)操作
//獲取方法 通過(guò)對(duì)應(yīng)的key 獲取對(duì)應(yīng)的cookie的值
function get(key){
    var cookie = {} //用于存儲(chǔ)所有的cookie相關(guān)的內(nèi)容的
    //獲取對(duì)應(yīng)cookie的字符串  age=123; name=123
    var cookieStr = document.cookie
    var cookies = cookieStr.split(';')
    for(var c of cookies){
        //對(duì)應(yīng)name=123進(jìn)行分割
        var cookieArr = c.trim().split('=')
        //將第一個(gè)值當(dāng)作key 第二個(gè)當(dāng)作value {name:123}
        cookie[cookieArr[0]] = cookieArr[1]
    }
    return cookie[key]
}
//封裝一個(gè)設(shè)置相關(guān)方法
//key=value;expires=時(shí)間;path=地址;domain=域名;secure
function set(key,value,expires,path,domain,secure){
    //如果沒(méi)有key 直接報(bào)錯(cuò)
    if(!key){
        throw new Error('必須填入key值')
    }
    //如果沒(méi)有value將value設(shè)置為空字符
    if(!value){
        value = ""
    }
    var cookieStr = `${key}=${value}`
    //如果對(duì)應(yīng)的傳入過(guò)期時(shí)間是日期類型
    if(expires instanceof Date){
        cookieStr += `;expires=${expires}`
    }
    // 如果有path
    if(path){
        cookieStr += `;path=${path}`
    }
    //如果有domain
    if(domain){
        cookieStr += `;domain=${domain}`
    }
    // 如果有secure
    if(secure){
        cookieStr += `;secure`
    }
    document.cookie = cookieStr
}
//刪除方法 設(shè)置對(duì)應(yīng)的過(guò)期時(shí)間
function remove(key,value,expires){
    set(key,value,new Date())
}   

第三方封裝的cookie:

cookie.js(vue里面采用了
  1. 下載js文件
  2. 打開官網(wǎng),看對(duì)應(yīng)的demo(看源碼)
<script src="./cookie.min.js"></script>
<script>
    //核心對(duì)象 window.Cookies
    //get 獲取的 set 設(shè)置 remove 刪除
    Cookies.set('name','tom')
    console.log(Cookies.get('name'));
    Cookies.remove('name','tom')
</script>
核心方法:
  • set 設(shè)置cookie的方法
  • get 獲取cookie的方法
  • remove 刪除cookie的方法

JSON格式:

概述: json是一種數(shù)據(jù)傳輸?shù)母袷剑瑢?duì)應(yīng)的數(shù)據(jù)傳輸中會(huì)常用到j(luò)son。

json傳輸格式的好處:
  • 跨平臺(tái)
  • 跨語(yǔ)言
json格式的表示形式:

概述:json文件里面的key必須是字符串,字符串必須是雙引號(hào)括起來(lái)。

  1. 對(duì)象 {}
var json = {}
  1. 數(shù)組 []
var json = []

JSON的序列化和反序列化:

1.序列化

概述:就是將一個(gè)json對(duì)象轉(zhuǎn)為對(duì)應(yīng)的字符串。(JSON.stringify())

//JSON.stringify() //轉(zhuǎn)為json格式的字符串
var jsonStr = JSON.stringify(obj)
console.log(jsonStr);
2.反序列化

概述:將一個(gè)json格式字符串轉(zhuǎn)為對(duì)應(yīng)的對(duì)象。(JSON.parse())

//JSON.parse() //將json格式的字符串轉(zhuǎn)換對(duì)應(yīng)對(duì)象
var obj = JSON.parse(jsonStr)
console.log(obj);

本地緩存

  • localStorage 本地緩存(持久化存在,不主動(dòng)刪除就一直存在)
//setItem 設(shè)置元素 key value
//getItem 獲取元素 通過(guò)key來(lái)獲取value
// removeItem 移除元素 根據(jù)key刪除對(duì)應(yīng)元素
localStorage.setItem('username','jack')
console.log(localStorage.getItem('username'));
localStorage.removeItem('username')
  • sessionStorage 本地緩存 (跟服務(wù)器的session一致,只要關(guān)閉瀏覽器就沒(méi)有了)
sessionStorage.setItem('password','123')
console.log(sessionStorage.getItem('password'));
sessionStorage.removeItem('password')
localstorage (作為客戶端緩存)和sessionStorage (做服務(wù)端的緩存 用戶信息)區(qū)別:
  • localStorage 會(huì)持久化存在
  • sessionStorage 瀏覽器關(guān)閉就沒(méi)有了
  • localStorage和sessionStorage存儲(chǔ)地址不一樣
localStorage和cookie的區(qū)別:
  • localStorage存儲(chǔ)大小為5M左右,cookie存儲(chǔ)大小為4kb左右
  • cookie會(huì)隨請(qǐng)求發(fā)送,localStorage不會(huì)隨請(qǐng)求發(fā)送
  • cookie中存儲(chǔ)的數(shù)據(jù)對(duì)應(yīng)的類型較?。▓D片的base碼) ,localStorage可以存儲(chǔ)
  • cookie可以跨域,localStorage不可以跨域
  • cookie跨域設(shè)置對(duì)應(yīng)的過(guò)期時(shí)間;localStorage不能,需要主動(dòng)刪除不然一直都在
  • cookie和localStorage存儲(chǔ)位置不一樣
localStorage和cookie的共同點(diǎn):
  • localStorage和cookie都是存放對(duì)應(yīng)的字符串
  • localStorage和cookie都是位于瀏覽器上
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 關(guān)于對(duì)應(yīng)的計(jì)算機(jī)的一些基礎(chǔ)課程 數(shù)據(jù)結(jié)構(gòu) (leetcode)邏輯結(jié)構(gòu)存儲(chǔ)結(jié)構(gòu) (數(shù)組,字符串,棧,隊(duì)列,圖,ha...
    湖南第一深情閱讀 301評(píng)論 0 0
  • http(網(wǎng)絡(luò)傳輸協(xié)議)https(安全) 特點(diǎn): 無(wú)狀態(tài) (不知道訪問(wèn)者是誰(shuí)) 無(wú)連接 (連接完成后會(huì)斷開) 長(zhǎng)...
    YonEn閱讀 287評(píng)論 0 0
  • 計(jì)算機(jī)網(wǎng)絡(luò) 概述:將不同的計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)應(yīng)用使用對(duì)應(yīng)的傳輸介質(zhì)進(jìn)行聯(lián)通. 網(wǎng)絡(luò)協(xié)議及其構(gòu)成 概述:網(wǎng)絡(luò)OSI構(gòu)成由...
    yukinoys閱讀 231評(píng)論 0 0
  • 1.cookie 是由W3C組織提出,最早由Netscape社區(qū)發(fā)展的一種機(jī)制。由于HTTP是一種無(wú)狀態(tài)的協(xié)議,服...
    心存美好閱讀 1,686評(píng)論 0 4
  • Cookie(會(huì)話跟蹤技術(shù)) 是存儲(chǔ)在瀏覽器中的緩存信息,Cookie是開發(fā)人員如今可以使用的最古老、最穩(wěn)定的客戶...
    夏炎冰閱讀 757評(píng)論 0 5

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