cookie和session的用法和区别

在项目中使用于 登录验证和权限校验还有菜单生成

cookie就是保存在浏览器本地的一组组键值对            cookie的请求头是:set_cookie

为什么使用cookie

是因为HTTP协议是无序的,无状态就是每次请求都是独立的,执行页面前后没有相应的关系

cookie的工作原理

浏览器访问服务器的时候,会带着一个空的cookie,然后由浏览器产生内容 保存在浏览器本地

cookie的特点

1.cookie是服务器让浏览器进行设置的

2.浏览器保存在浏览器本地

3.下次访问时自动携带

应用场景

cookie是保存信息的  大多应用在  登录,保存登录习惯,简单的投票

cookie的设置

ret = reditect('index)     /  HttpResponse  /   render

不加盐的:   ret.set_cookie(key,value)

加盐的:   ret.set_signed_cookie(key,value,'盐')  

cookie的获取

不加盐的:  request.COOKIES.get()          /       也可以当作字典取值  COOKIES['key']

加盐的:    request.get_signed_cookie('key',salt='加密盐',default='获取不到显示的异常',max_age=None,有效时间(秒))

cookie的删除

ret=redirect('/login/')

ret.delete_cookie('key')

cookie的设置 (参数)

key  键     value  值    max_age=None  超时时间     path='/'   cookie的生效路径,/表示根目录, 根目录可以被任何url使用

domain=None, Cookie生效的域名

secure=False, https传输

httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

 

session是保存在服务器(文件中,数据库)上的一组组键值对(必须依赖cookie)

为什么要有session

1.cookie保存在浏览器本地,不安全

2.cookie对大小.个数有限制

session的设置

request.session[key] = value

request.session.setdefault('k1',value) # 存在则不设置

帮你生成随机字符串,帮你将这个随机字符串和用户数据(加密后)和过期时间保存到了django-session表里面,

帮你将这个随机字符串以sessionid:随机字符串的形式添加到cookie里面返回给浏览器

但是注意一个事情,django-session这个表,你不能通过orm来直接控制,因为你的models.py里面没有这个对应关系

session的删除

del request.session['k1']   django-session表里面同步删除

request.session.delete()   删除当前会话的所有Session数据

request.session.flush()   删除当前的会话数据并删除会话的Cookie。

 

获取session所有的键,值,键值对

request.session.keys()                                 在py文件中

request.session.values()

request.session.items()

request.session.存进session是的名           在html文件中

posted @ 2019-07-25 21:38  老李,向我开炮  阅读(567)  评论(0编辑  收藏  举报