Cookie(就是保存在浏览器端的键值对,用于登录)
1、特点
1)保存在客户端,用户浏览器
2)可以主动清除
3)也可以被伪造
4)跨域名cookie不共享
5)浏览器可以设置不接受cookie(将不能登录页面)
6)可以设置超时时间
1 rep = redirect('/index.html')
2
3 timeout = datetime.datetime.utcnow() + datetime.timedelta(seconds=5)
4
5 rep.set_cookie('username',user,max_age=10,expires=timeout)
6 # max_age 和 expires 作用相同,expires用于IE
2、获取cookie
1 request.COOKIES['key']
2 request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
3 参数:
4 default: 默认值
5 salt: 加密盐
6 max_age: 后台控制过期时间
3、设置cookie(服务端)
1 rep = HttpResponse(...) 或 rep = render(request, ...)
2
3 rep.set_cookie(key,value,...)
4 rep.set_signed_cookie(key,value,salt='加密盐',...)
5 参数:
6 key, 键
7 value='', 值
8 max_age=None, 超时时间
9 expires=None, 超时时间(IE requires expires, so set it if hasn't been already.)
10 path='/', Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问
11 domain=None, Cookie生效的域名
12 secure=False, https传输
13 httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
由于cookie保存在客户端的电脑上,所以,JavaScript和jquery也可以操作cookie。
两种方式:1)自己写dom (document.cookie) 2)jQuery插件-->jquery.cookie.js (且必须使用jQuery)
1 <script src='/static/js/jquery.cookie.js'></script>
2 $.cookie("list_pager_num", 30,{ path: '/' });
1 $.cookie(key) # 获取值(内部 split , 正则)
2
3 $.cookie(key,value) # 设置值
4
5 $.cookie(key,value,{...}) # 其中{...}内为set_cookie 的参数