一,Cookie的由来
HTTP请求是无状态的,每一次请求对于服务器端来说都是独立的,对服务器来说,每次的请求都是全新的。
它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会首前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。
状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据优势我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生
1.什么是Cookie
Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用的信息
2.Cookie的原理
Cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能通过Cookie的内容来判断这个是"谁"了。
3.查看Cookie
扫描二维码关注公众号,回复:
4056284 查看本文章
二,Django中操作Cookie
1.读取Cookie
#方式一:只取值的时候使用 request.COOKIES['key'] request.COOKIES.get('key') #方式二:有其他参数时使用 request.get_signed_cookie('key',salt='加密盐',default='当获取不到值时,默认的返回值',max_age:int类型:后台控制的过期时间)
2.设置Cookie
rep = HttpResponse(...) rep = render(request, ...) rep = redirect('/url/') #第一种 rep.set_cookie(key,value,...) #常用参数: key, 键 value='', 值 max_age=None, 超时时间 expires=None, 超时时间(IE requires expires, so set it if hasn't been already.) #其他参数: path='/', Cookie生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问 domain=None, Cookie生效的域名 secure=False, https传输 httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖) #第二种,参数只有加密盐 rep.set_signed_cookie(key,value,salt='加密盐')
3.删除Cookie
def logout(request): rep = redirect("/login/") rep.delete_cookie("user") # 删除用户浏览器上之前设置的usercookie值 return rep