cookies与session
前期cookies
最开始的浏览器,每次向服务器的请求都自报家门,即每发一次请求,都把用户名和密码都发过去:
当用户第一次把用户名和密码输对了之后。浏览器自动保存用户名和密码。发请求时,浏览器自动帮你输入用户名密码。
浏览器有能力记住不同网站的用户名和密码。此时浏览器也就是客户端。
产生了cookie的定义:
保存在客户端与用户状态相关的信息(通常情况下类似于字典的kv键值对)
早期的cookies很不安全:
真实的用户名密码保存在浏览器不安全。万一有人打开你的电脑,就可以轻而易举的窃取浏览器中保存的密码。
随机字符串解决cookies安全问题
所以采取了以下办法:
当第一次输对了用户名和密码,服务端会给你发一个随机字符串。服务端有一张表记着字符串和用户的对应关系。下次访问服务端的时候,你把这个随机字符串带上,服务端可以通过表来确定这个随机字符串对应哪个用户。
这样做的好处:
外人查看随机字符串,也无法查看用户的密码。而用户可以拿着随机字符串进行登录。
session的定义:
用户真正的数据保存在服务端,所以我们把保存在服务端中,跟用户状态相关的信息叫做session。
随机字符串叫什么?
随机字符串既存在于浏览器,也存在于服务端。
在客户端上叫cookies 。
在服务端上叫session。
注意:
session是不可能单独工作的,要依赖于cookies。
所有跟用户状态相关的操作 都要依赖于cookies
禁止浏览器保存cookies
在开发者工具的application查看cookies:
浏览器有拒绝保存cookies的功能:
禁用cookies后无法进行登录:
django操作 cookies
from django.shorcuts import render,HttpResponse,redirect
要想操作cookie就不能直接返回HttpResponse对象 必须先用变量接收
obj1 = render()
return obj1
obj2 = HttpResponse()
return obj2
obj3 = redirect()
return obj3