Cookie和Session

一.為什么需要cookie?
A、B兩人都有自己的京東賬號(hào),且都在本地登錄成功過(guò)(7天免密登錄),此時(shí)A將自己的購(gòu)物車練級(jí)發(fā)送給B,B用瀏覽器訪問(wèn)該鏈接是無(wú)法查看到A的購(gòu)物車內(nèi)容的,B可能直接進(jìn)入到自己的購(gòu)物車或者提示B需要重新登錄跳轉(zhuǎn)到了登錄頁(yè)面。該場(chǎng)景說(shuō)明,服務(wù)端知道訪問(wèn)的客戶端是誰(shuí)。但是我們都知道http是無(wú)狀態(tài)的,我們就需要使用cookie來(lái)標(biāo)記客戶端是誰(shuí)并將其發(fā)送給服務(wù)端。
二.Cookie及Session
Cookie 是保存在本地的一組鍵值對(duì)。Cookie的工作原理:它是當(dāng)客戶端訪問(wèn)服務(wù)端后,服務(wù)端生成的并發(fā)送給客戶端并保存在客戶端本地的一組鍵值對(duì),它是用來(lái)保存用戶的信息(信息客戶端自定義)。當(dāng)瀏覽器再次訪問(wèn)時(shí),瀏覽器就會(huì)自動(dòng)帶上cookie,這樣服務(wù)器就能通過(guò)cookie的內(nèi)容來(lái)判斷服務(wù)端是誰(shuí)了。
雖然cookie在一定程度上解決了”保持狀態(tài)”的需求,彌補(bǔ)了http協(xié)議的無(wú)狀態(tài)的缺陷,但是由于cookie本身最大只支持4096字節(jié);且cookie是保存在客戶端本地的,可以被攔截或截取,在安全性上并不能保證。所以,此時(shí)需要用session來(lái)協(xié)助解決最大字節(jié)問(wèn)題及保存在本地的安全性問(wèn)題,session將用戶信息保存在服務(wù)器。
那么,如果將session保持到服務(wù)端,客戶端如何通過(guò)cookie將服務(wù)端的session橋接起來(lái)?
這樣就出現(xiàn)了cookie和session如何協(xié)助的問(wèn)題?我們可以給每個(gè)客戶端的cookie分配一個(gè)唯一的id,這樣用戶在訪問(wèn)時(shí),通過(guò)cookie,服務(wù)器就知道來(lái)的人事誰(shuí)。然后我們?cè)俑鶕?jù)不同cookie的id,在服務(wù)器上保存一段時(shí)間的用戶私密資料。
總結(jié)而言:cookie彌補(bǔ)了http無(wú)狀態(tài)的不足,讓服務(wù)器知道來(lái)的人是’誰(shuí)’;但是cookie以文本的形式保存在本地,自身安全性較差;所以我們就通過(guò)cookie識(shí)別不同的用戶,對(duì)應(yīng)的在session里保存用戶私密的信息已及能超過(guò)4096字節(jié)的文本。

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),旌德網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:旌德等地區(qū)。旌德做網(wǎng)站價(jià)格咨詢:028-86922220

三.Cookie的單獨(dú)使用

from django.shortcuts import render,redirect
# Create your views here.
def login(request):
    if request.method == 'POST':
        if request.POST.get('username') == 'admin' and request.POST.get('pwd') == 'admin':
            ret = redirect('/mainmenu/')
            ret.set_cookie('username',request.POST.get('username'))
            return ret
        else:
            return render(request, 'login.html')
    else:
        return render(request, 'login.html')

def mainmenu(request):
    print('cookie:',request.COOKIES)
    print('sessionname:',request.session.get('username'))
    print('sessionpwd:',request.session.get('pwd'))
    if request.COOKIES.get('username',None):
        return render(request,'mainmenu.html')
    else:
        return redirect('/login/')

Cookie和Session
四.Cookie及Session的結(jié)合應(yīng)用

from django.shortcuts import render,redirect
# Create your views here.
def login(request):
    if request.method == 'POST':
        if request.POST.get('username') == 'admin' and request.POST.get('pwd') == 'admin':
            request.session['username'] = request.POST.get('username')
            request.session['pwd'] = request.POST.get('pwd')
            return redirect('/mainmenu/')
        else:
            return render(request, 'login.html')
    else:
        return render(request, 'login.html')

def mainmenu(request):
    print('cookie:',request.COOKIES)
    print('sessionname:',request.session.get('username'))
    print('sessionpwd:',request.session.get('pwd'))
    if request.session.get('username',None):
        return render(request,'mainmenu.html')
    else:
        return redirect('/login/')

Cookie和Session
Cookie和Session
五.歡迎關(guān)注筆者公眾號(hào)
Cookie和Session

當(dāng)前文章:Cookie和Session
路徑分享:http://www.muchs.cn/article20/gcepco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、定制開(kāi)發(fā)、用戶體驗(yàn)關(guān)鍵詞優(yōu)化、微信小程序、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司