首頁(yè)技術(shù)文章正文

Cookie是什么?怎樣實(shí)現(xiàn)Cookie的讀寫(xiě)?

更新時(shí)間:2021-09-14 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班


Cookie,有時(shí)也用其復(fù)數(shù)形式Cookies,指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過(guò)加密)。Cookie最早是網(wǎng)景公司的前雇員Lou Montulli在1993年3月的發(fā)明。Cookie是由服務(wù)器端生成,發(fā)送給User-Agent(一般是瀏覽器),瀏覽器會(huì)將Cookie的key/value保存到某個(gè)目錄下的文本文件內(nèi),下次請(qǐng)求同一網(wǎng)站時(shí)就發(fā)送該Cookie給服務(wù)器(前提是瀏覽器設(shè)置為啟用cookie)。Cookie名稱和值可以由服務(wù)器端開(kāi)發(fā)自己定義,這樣服務(wù)器可以知道該用戶是否合法用戶以及是否需要重新登錄等。服務(wù)器可以利用Cookies包含信息的任意性來(lái)篩選并經(jīng)常性維護(hù)這些信息,以判斷在HTTP傳輸中的狀態(tài)。Cookies最典型的應(yīng)用是判定注冊(cè)用戶是否已經(jīng)登錄網(wǎng)站,用戶可能會(huì)得到提示,是否在下一次進(jìn)入此網(wǎng)站時(shí)保留用戶信息以便簡(jiǎn)化登錄手續(xù),這些都是Cookies的功用。另一個(gè)重要應(yīng)用場(chǎng)合是“購(gòu)物車”之類處理。用戶可能會(huì)在一段時(shí)間內(nèi)在同一家網(wǎng)站的不同頁(yè)面中選擇不同的商品,這些信息都會(huì)寫(xiě)入Cookies,以便在最后付款時(shí)提取信息。

Cookie是存儲(chǔ)在瀏覽器中的一段純文本信息,建議不要存儲(chǔ)敏感信息如密碼,因?yàn)殡娔X上的瀏覽器可能被其他人使用。

Cookie以鍵值對(duì)的格式進(jìn)行信息的存儲(chǔ)。

Cookie基于域名安全,不同域名的Cookie是不能互相訪問(wèn)的,如訪問(wèn)itcast.cn時(shí)向?yàn)g覽器中寫(xiě)了Cookie信息,使用同一瀏覽器訪問(wèn)baidu.com時(shí),無(wú)法訪問(wèn)到itcast.cn寫(xiě)的Cookie信息。

當(dāng)瀏覽器請(qǐng)求某網(wǎng)站時(shí),會(huì)將本網(wǎng)站下所有Cookie信息提交給服務(wù)器。

典型應(yīng)用:記住用戶名,網(wǎng)站的廣告推送。

說(shuō)明:點(diǎn)擊示例網(wǎng)址,這些廣告推送的商品是基于你曾經(jīng)在淘寶上點(diǎn)擊的商品類別等條件篩選出來(lái)的,看上去這是在鳳凰網(wǎng)上訪問(wèn)淘寶網(wǎng)的Cookie,但是事實(shí)不是這樣的,一般是采用iframe標(biāo)簽嵌套一個(gè)淘寶的廣告頁(yè)面到鳳凰網(wǎng)的頁(yè)面上,所以淘寶的Cookie并沒(méi)有被鳳凰網(wǎng)讀取到,而是依然交給淘寶網(wǎng)讀取的,可以通過(guò)“開(kāi)發(fā)者工具”查看元素,如下圖

1631588075599_11.png

接下來(lái)講解如何在Django中實(shí)現(xiàn)Cookie的讀寫(xiě)

設(shè)置Cookie

打開(kāi)booktest/views.py文件,創(chuàng)建視圖cookie_set

def cookie_set(request):
    response = HttpResponse("<h1>設(shè)置Cookie,請(qǐng)查看響應(yīng)報(bào)文頭</h1>")
    response.set_cookie('h1', '你好')
    return response

打開(kāi)booktest/urls.py文件,配置url

url(r'^cookie_set/$',views.cookie_set),

在瀏覽器輸入如下網(wǎng)址

http://127.0.0.1:8000/cookie_set/

在“開(kāi)發(fā)者工具”中可以在響應(yīng)頭中查看到設(shè)置的Cookie信息

1631588084422_12.png

讀取Cookie

Cookie信息被包含在請(qǐng)求頭中,使用request對(duì)象的COOKIES屬性訪問(wèn)打開(kāi)booktest/views.py文件,創(chuàng)建視圖cookie_get

def cookie_get(request):
    response = HttpResponse("讀取Cookie,數(shù)據(jù)如下:<br>")
    if request.COOKIES.has_key('h1'):
        response.write('<h1>' + request.COOKIES['h1'] + '</h1>')
    return response

打開(kāi)booktest/urls.py文件,配置url

    url(r'^cookie_get/$',views.cookie_get),

在瀏覽器輸入如下網(wǎng)址

http://127.0.0.1:8000/cookie_get/

打開(kāi)“開(kāi)發(fā)者工具”,在請(qǐng)求頭中可以查看Cookie信息,瀏覽效果如下圖

1631588093532_13.png








猜你喜歡:

python如何使用Cookie?

Cookie、sessionStorage、localStorage的區(qū)別

cookie和session的區(qū)別和用法【Java面試題解析】

什么是查詢集?怎樣創(chuàng)建和使用查詢集?

黑馬程序員Python大數(shù)據(jù)開(kāi)發(fā)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!