1,cookie的存储方式
key:value
http是无状态协议
无状态请求:请求1和请求2是没有联系的
如何记住某些用户?
<1>用户发起请求1
<2>服务器发现没有id,则给他分配一个id=1,并返回给浏览器
<3>浏览器将id保存到本地cookie中(安全机制:不能跨域访问)
<4>用户再发起请求,会带上cookie中的id=1
<5>服务器看id是1,取出1的信息
可在谷歌浏览器,application/cookies下查看cookie
2,session
django中的django_session表
session_key是服务器给浏览器返回的id
session_data将用户的信息(名称,密码)加密
expire_data过期时间
可以看到浏览器中的sessionid与django_session中的session_key是一样的
这样每次访问的时候,带着自己的session_key,服务器就知道是哪个用户了
django如何通过request拿到用户,request.user?
install_apps中的django.contrib.sessions,会去django_session表里,拿着session_key比对,找到session_data将其解密,就知道是哪个用户了
区别:
cookie是浏览器的本地存储机制,与服务器是没有关系的(键值对存在对应的域名下)
不安全,本地信息会被窃取
session是存储在服务器端的,把sesion(加密的字符串)发给用户,用户存在了cookie中,然后下次请求时将cookie中的信息,即session发给服务器,服务器通过sessionid就知道是哪个用户