-简介
什么是cookie
cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息
cookie的原理
cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了
查看cookie
session的由来
cookie虽然在一定程度上解决了“保持状态”的需求,但是由于cookie本身最大支持4096字节,以及cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且它保存在服务器,有较高的安全性。这就是session
cookie和session其实是共通性的东西,session是基于cookie工作的
-Django操作cookie
cookie即是服务端告诉客户端浏览器需要保存的内容,但客户端也可选择拒绝保存,如edge浏览器中设置关闭“允许站点保存和读取 Cookie 数据(推荐)”,则会导致一些网站访问不进去或每点击一个网页都需登录。
PS:
Django要想操作cookie,之前Django三板斧(render,HttpResponse,redirect)都是直接return xxx(),但若想操作cookie则需先:
obj = xxx()
操作cookie语句 # 必须先用obj对象接收,在中间操作
return obj
方法:
设置cookie:
obj.set_cookie(key, value)
获取cookie:
request.COOKIE.get(key)
设置超时时间(一段时间未登录自动注销):
obj.set_cookie(key, value, max_age = num) # 单位为秒 PS: IE浏览器为expires参数
注销功能:
obj.delete_cookie(key)
-Django操作session
session是保存在服务端的,给客户端返回的是一个随机字符串
客户端浏览器保存格式: sessionid : 随机字符串
那session产生的随机字符串保存在服务端的哪呢?有多种保存方式:
1、数据库
保存在数据库时,是保存在django_session表中的,包含三个字段:
session_key session_data expiry_date(超时时间,Django默认是14天后)
执行数据库迁移命令,Django自动创建的表中就有一张django_session表
2、文件
3、redis
4、memcache
…
设置session
request.session['key'] = value
获取session:
request.session.get('key')
设置过期/超时时间:
request.session.set_expiry()
括号内有四种参数可选
1.整数 整数秒
2.日期对象 指定日期失效
3.0 浏览器窗口一关闭立刻失效
4.不写 默认14天
清除session:
request.session.delete() # 只清除服务端保存的,客户端浏览器的 不删
request.session.flush() # 浏览器和服务端的都删