上一篇:Django之时间区问题(其他篇二)点击跳转
目录篇:Django之其他目录篇 点击跳转
下一篇:Django之分页(其他篇四)点击跳转
什么是cookie?
我们都知道:httm请求默认都是短链接,每发一次请求得到回复就就断开连接
浏览器登录一个网站为什么登录密码能记住1个月?如何实现
结论:反过来想,我们在一台电脑选择记录登录账户和密码以后,我们一开该网站就自动登录了 但是我们去另外一台电脑登录该网站,就需要输入账户密码,由此可以得到一个结论:记录登录是本地电脑浏览器的行为
原理:是这样的,当你选择记录账户和密码的时候,该网站的服务器会回复一段字符串,然后你会保存到当前浏览器某个文件中或者是你的本地电脑的文件夹里面。当你再次访问该网站的时候,首先会调用之前保存的字符串,然后该网站的服务器会验证该字符串是否正确,正确表示生效
证明:浏览器去运行的时候支持一个操作:服务端可以在浏览器写代码,也就是支持服务器端可以写某个东西到客户端的硬盘上,而实现该功能的是Cookies
Cookie:有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)
cookie摘要
1.浏览器必有,如果浏览器cookie禁用掉,所有网站将不能登录
2.cookie是客户端浏览器上的一个文件(存放服务端返回的数据如:{‘k’:’asdf’} )
3.客户端每次访问网站的时候请求内容会有cookie里的数据
注意:
优点:把数据放在客户端,减少后端压力
缺点:如果基于cookie做用户验证时,把敏感信息放cookie里面的话就会出现问题(如余额,密码),人家就能看到,(敏感信息不建议放在cookie里..一般情况我们实现都是cookie+session配合)
cookie的作用和流程:
客户端浏览器第一次访问网页进行登录,登录成功后------>服务端验证,验证成功随机生成字符串如:{list_login:sdfasfsdfsfdsf},然后把该字符串返回----->客户端接收了该字符串存放在该浏览器的cookie里
客户端第二次访问该网页(只要访问该登录后的网页,就会带cookie内容发送给该网页)---->服务端就会对客户端访问请求里面的cookie进行匹配,是否有我第一次返回给浏览器的字符串,如果就给访问,如果没有,根据执行函数执行其他操作。
cookie参数
1、获取Cookie:
request.COOKIES['key']
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
参数:
default: 默认值
salt: 加密盐
max_age: 后台控制过期时间
2、设置Cookie:
HttpResponse(...) 或 rep = render(request, ...)
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密盐',...)
参数:
key, &nb