Cookie和Session
admin
2023-07-14 12:44:10
0次

一.为什么需要cookie?
A、B两人都有自己的京东账号,且都在本地登录成功过(7天免密登录),此时A将自己的购物车练级发送给B,B用浏览器访问该链接是无法查看到A的购物车内容的,B可能直接进入到自己的购物车或者提示B需要重新登录跳转到了登录页面。该场景说明,服务端知道访问的客户端是谁。但是我们都知道http是无状态的,我们就需要使用cookie来标记客户端是谁并将其发送给服务端。
二.Cookie及Session
Cookie 是保存在本地的一组键值对。Cookie的工作原理:它是当客户端访问服务端后,服务端生成的并发送给客户端并保存在客户端本地的一组键值对,它是用来保存用户的信息(信息客户端自定义)。当浏览器再次访问时,浏览器就会自动带上cookie,这样服务器就能通过cookie的内容来判断服务端是谁了。
虽然cookie在一定程度上解决了”保持状态”的需求,弥补了http协议的无状态的缺陷,但是由于cookie本身最大只支持4096字节;且cookie是保存在客户端本地的,可以被拦截或截取,在安全性上并不能保证。所以,此时需要用session来协助解决最大字节问题及保存在本地的安全性问题,session将用户信息保存在服务器。
那么,如果将session保持到服务端,客户端如何通过cookie将服务端的session桥接起来?
这样就出现了cookie和session如何协助的问题?我们可以给每个客户端的cookie分配一个唯一的id,这样用户在访问时,通过cookie,服务器就知道来的人事谁。然后我们再根据不同cookie的id,在服务器上保存一段时间的用户私密资料。
总结而言:cookie弥补了http无状态的不足,让服务器知道来的人是’谁’;但是cookie以文本的形式保存在本地,自身安全性较差;所以我们就通过cookie识别不同的用户,对应的在session里保存用户私密的信息已及能超过4096字节的文本。

三.Cookie的单独使用

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的结合应用

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
五.欢迎关注笔者公众号
Cookie和Session

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...