第五单元 保持状态

本文探讨了Cookie在HTTP会话中的作用,如何设置、获取与删除,以及与Session的区别,包括其安全特性。同时介绍了CSRF攻击原理与防范措施。最后,以编程实例展示了在Django中处理这些技术的场景。
摘要由CSDN通过智能技术生成

Cookie

1.cookie的作用

当客户端访问时,服务端会为客户端生成一个`Cookie`键值对数据,通过`Response`响应给到客户端。当下一次客户端继续访问相同的服务端时,浏览器客户端就会将这个`Cookie`值连带发送到服务端

2.cookie的应用

views层

**设置与获取cookie**
获取:直接通过get获取即可
class CookieView(View):
    # 如果没有cookie,设置cookie;如果有的话,展示当前的cookie
    def get(self,request):
        cookie_data = request.COOKIES.get('shenfen')
        if cookie_data is None:
            resp = HttpResponse('设置cookie')
            resp.set_cookie('shenfen','kjdl')
            return resp
        else:
            return HttpResponse(f"当前cookie信息为{cookie_data}")


**删除COOKIE**
删除:删除指定的key及对应的value
class DelCookieView(View):
    # 删除Cookie
    def get(self,request):
        resp = HttpResponse("删除cookie信息")
        resp.delete_cookie('shenfen')
        return resp

url层

    path('cookie/',views.CookieView.as_view()),
    path('delcookie/',views.DelCookieView.as_view()),

Session

1.与cookie的优略势

优势:
1.在服务端运行,比cookie更加安全
2.数据不会丢失,可以一直在整个会话过程中存活。
劣势:
1.cookie可以保持用户在访问站点时的状态

2.session的应用

views层

**设置与获取session**
获取:直接通过get获取即可
class SessionView(View):
    # 如果session不存在,生成一个session;如果存在,返回session信息
    def get(self,request):
        session_data = request.session.get('money')
        if session_data is None:
            request.session['money'] = '10000000'
            return HttpResponse('设置session')
        else:
            return HttpResponse(f"session信息为:{session_data}")


**删除session**
class DelSessionView(View):
    def get(self,request):
        if request.session.get('money') is None:
            return HttpResponse('session不存在')
        else:
            del request.session['money']
            return HttpResponse("session已经删除")

url层

 path('session/',views.SessionView.as_view()),
    path('delsession/',views.DelSessionView.as_view())

CSRF

csrf的攻击流程

在这里插入图片描述
csrf攻击如何防范

代码内部添加:
{% csrf_token %}

今日错误总结
在这里插入图片描述
做作业的时候,game数据库中存放账号密码的user表里的密码应该用CharField类型来定义,我用成了
数值类型。导致密码一直错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值