【无标题】

1.长、短链接

在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

HTTP/1.1起,默认使用长连接,用以保持连接特性。在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

保持状态cookie,和session
2.什么是cookie

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

Cookie值存储在浏览器下,一般在你的浏览器安装目录的Cookie目录下,我们也可以通过F12或者各种浏览器的开发者工具来获取到

因为cookie是保存在浏览器中的一个纯明文字符串,所以一般来说服务端在生成cookie值时不建议存储敏感信息比如密码

2.1.设置cookie
class setCookie(View):
    def get(self,request):
        # 获取cookie
        cookie_data = request.COOKIES.get('status')
        if cookie_data is not  None:
            return HttpResponse(f"cookie信息已存在{cookie_data}")
        else:
            resp =  HttpResponse("设置cookie")
            resp.set_cookie('status','huangjin')
            return resp
2.2.删除cookie
class deletecookie(View):
    def get(self,request):
        # 获取cookie
        cookie_data = request.COOKIES.get('status')
        if cookie_data is not  None:
            resp = HttpResponse(f'删除cookie{cookie_data}')
            resp.delete_cookie('status')
            return resp
        else:
            return HttpResponse('cookie不存在')
3.什么是session

Session在网络中,又称会话控制,简称会话。用以存储用户访问站点时所需的信息及配置属性。当用户在我们的Web服务中跳转时,存储在Session中的数据不会丢失,可以一直在整个会话过程中存活。
django中,默认的Session存储在数据库中session表里。默认有效期为两个星期

3.1设置session
class setsession(View):
    # 设置session
    def get(self,request):
        session_data = request.session.get('money')
        if session_data is not  None:
            return HttpResponse(f'session信息为{session_data}')
        else:
            request.session['money'] = 100000
            return HttpResponse("设置session")
3.2删除session
class delsession(View):
    # 删除session
    def get(self,request):
        session_data  =request.session.get('money')
        if session_data is not None:
            del request.session['money']
            return  HttpResponse("session数据以删除")
        else:
            return HttpResponse("session不存在")
4.删除总结:

使用的是del的针对性删除方式,这样不会将整个客户端的session删除掉

使用request.session.clear(),只是清空了服务端Session中的数据,但是客户端的Cookie中还会保存sessionid,只不过这个值对应的字符串所对应的用户数据是一个空

使用request.session.flush(),那么客户端Cookie中保存的sessionid首先会被删除,其次服务端通过sessionid值保存的用户数据也会被全部删除。

5.Session与Cookie的对比

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

6.什么是scrf

CSRF(Cross-site request forgery):跨站请求伪造。
a 有某视频会员,他会员正在登录着
a到b创建的服务器里玩
b就可以悄悄的使用a的账号去看视频

7.如何防止scrf攻击

对于 POST,服务端在创建表单的时候可以加一个隐藏字段,也是通过某种加密算法得到的。在处理请求时,验证这个字段是否合法,如果合法就继续处理,否则就认为是恶意操作。

<form method="post" action="/delete">
  <!-- 其他字段 -->
  <input type="hidden" />
</form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值