Django 中 cookie的使用,Cookie 与 Session 的区别!
Cookie 与 Session 的区别
-
cookie机制采用的是在客户端保持状态的方案,而session机制采用的使在服务器端保持状态的方案,由于采用服务器端保持状态的方案在客户端也需要保存一个表示,所以session机制可能需要借助于cookie机制来达到保存标识的目的。
-
cookie 不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
-
session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。
-
单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie。
-
个人建议:
- 将登录信息等重要信息存放为SESSION
- 其他信息如果需要保留,可以放在COOKIE中
-
cookie 是浏览器在客户端留下的一段记录,这段记录可以保留在内存或者硬盘上。因为http请求是无状态的,通过读取cookie的记录,服务器或者客户端可以维持会话中的状态。比如一个常见的应用场景就是登陆状态。Django里面,对cookie的读取和设置很简单。Cookie本身的格式类似字典,因此可以通过request的key或者get获取;然后它的设置则是通过response对象的set_cookie设定;如果要取消cookie,把过期时间设置为当前时间就行了。
-
cookie 的内容主要包括:名字、值、过期时间、路径和域。路径和域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命周期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命周期为浏览器会话期的cookie被称为会话cookie。
会话cookie一般不存储在硬盘上而是保存在内存里。
COOKIE_23">获取COOKIE
request.COOKIES[‘key’]
request.get_signed_cookie(key, default=RAISE_ERROR, salt=’’, max_age=None)
参数:
default: 默认值
salt: 加密盐
max_age: 后台控制过期时间
COOKIE_37">设置COOKIE
rep = HttpResponse( ) 或 rep = render(request, … )
rep.set_cookie(key, value, … )
rep.set_signed_cookie(key, value, salt=‘加密盐’, … )
参数:
key 键
value=’’, 值
max_age=None, 超时时间
expires=None, 超时时间(IE 浏览器必须要过期时间)
path=’/’, COOKIE生效的路径, / 表示根路径,特殊的:根路径的cookie可以被任何URL的页面访问
domain=None, cookie生效的域名
secure=False, https传输
httponly=Fasle 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)