cookies 通俗简单解释
用户访问一个浏览器支持cookie的网站的时候,用户会将自己的个人信息发送给服务器,网站服务器后台会根据这个信息返回给用户一个cookie,客户端收到这个信息之后会将这个cookie存放在本地,当客户端再次访问服务器的时候,会把这个cookie放到HTTP请求头里发送给服务器,这样服务器就知道还是这个用户就可以做相对应的处理。
浏览器相当与一个中间联络人,用户第一次访问服务器时,用户告诉了服务器它是谁,服务器就告诉浏览器这个人的信息告诉浏览器这个人在一定时间内带着你的信息来我就知道还是那个用户,用户以后访问服务器时候就是带着中间联络人浏览器去的,浏览器就会告诉服务器,这个人还是之前那个人,服务器就可以不做第二次验证了。
代码(django里面的部分代码,没学过django的只看逻辑也可以)
def login(request):
if request.COOKIES.get('driverID'): #检测cookie,检测到cookie之后跳转用户
#界面(相当于用户第二次访问请求头存在cookie)
db = mysql()
db.driverSeesion(request.COOKIES.get('driverID'), 1) #这个是数据库操作,不是cookie操作,不要误会
print("已登录!")
return render(request, 'index.html')
if request.method =="GET":
return render(request, 'login.html')
if request.method =="POST": #先从这里开始看
username = request.POST.get('username', None)
password = request.POST.get('password', None)
print(username, password)
if username and password: #用户登陆时候,将用户名和密码发送给服务器,服务器进行验证
db = mysql()
user = db.getuser(username)
if user and password == user['password']: #验证成功
print("登陆成功!", username)
db.driverSeesion(user['driverID'], 1)
res = render(request, 'index.html')
res.set_cookie('driverID', user['driverID'], 7200) #验证成功后创建cookie,发送给浏览器,
#cookie存在时间7200,过了这个时间cookie就无法验证了
return res
else:
return render(request, 'login.html')
def loginout(request):
if request.COOKIES.get('driverID'):
print("已注销!")
print("driverID=", request.COOKIES.get('driverID'))
res = render(request, 'login.html')
res.delete_cookie('driverID')
db = mysql()
db.driverSeesion(request.COOKIES.get('driverID'),0) # 用户主动注销账号要删除cookie
return res
return render(request, 'login.html')