饼干和会话

  

一。为什么需要饼干吗?
A, B两人都有自己的京东账号,且都在本地登录成功过(7天免密登录),此时一个将自己的购物车练级发送给B, B用浏览器访问该链接是无法查看到一个的购物车内容的,B可能直接进入到自己的购物车或者提示B需要重新登录跳转到了登录页面。该场景说明,服务端知道访问的客户端是谁。但是我们都知道http是无状态的,我们就需要使用饼干来标记客户端是谁并将其发送给服务端。
二。饼干及会话
饼干是保存在本地的一组键值对.Cookie的工作原理:它是当客户端访问服务端后,服务端生成的并发送给客户端并保存在客户端本地的一组键值对,它是用来保存用户的信息(信息客户端自定义)。当浏览器再次访问时,浏览器就会自动带上饼干,这样服务器就能通过饼干的内容来判断服务端是谁了。
虽然饼干在一定程度上解决了“保持状态”的需求,弥补了http协议的无状态的缺陷,但是由于饼干本身最大只支持4096字节;且饼干是保存在客户端本地的,可以被拦截或截取,在安全性上并不能保证,所以,此时需要用会话来协助解决最大字节问题及保存在本地的安全性问题,会话将用户信息保存在服务器。
那么,如果将会话保持到服务端,客户端如何通过饼干将服务端会话的桥接起来?
这样就出现了饼干和会话如何协助的问题?我们可以给每个客户端的饼干分配一个唯一的id,这样用户在访问时,通过饼干,服务器就知道来的人事谁。然后我们再根据不同饼干的id,在服务器上保存一段时间的用户私密资料。
总结而言:饼干弥补了http无状态的不足,让服务器知道来的人是谁,但是饼干以文本的形式保存在本地,自身安全性较差,所以我们就通过饼干识别不同的用户,对应的在会话里保存用户私密的信息已及能超过4096字节的文本。

  

三.Cookie的单独使用

  
 <代码> django。快捷方式进口呈现,定向
  #创建你的观点。
  def登录(请求):
  如果请求。方法==癙OST”:
  如果request.POST.get(“用户名”)==癮dmin”和request.POST.get (pwd)==肮芾怼?
  ret=重定向('/mainmenu/')
  ret.set_cookie(“用户名”,request.POST.get(“用户名”))
  返回受潮湿腐烂
  其他:
  返回渲染(请求,“login.html”)
  其他:
  返回渲染(请求,“login.html”)
  
  def mainmenu(请求):
  打印(cookie:, request.COOKIES)
  print (sessionname:, request.session.get(“用户名”))
  print (sessionpwd:, request.session.get (pwd))
  如果request.COOKIES.get(“用户名”,没有一个):
  返回渲染(请求,“mainmenu.html”)
  其他:
  返回重定向('/登录/') 
  

饼干和会话
四.Cookie及会话的结合应用

  
 <代码> django。快捷方式进口呈现,定向
  #创建你的观点。
  def登录(请求):
  如果请求。方法==癙OST”:
  如果request.POST.get(“用户名”)==癮dmin”和request.POST.get (pwd)==肮芾怼?
  请求。会话(“用户名”)=request.POST.get(用户名)
  请求。会话[' pwd ']=request.POST.get (pwd)
  返回重定向('/mainmenu/')
  其他:
  返回渲染(请求,“login.html”)
  其他:
  返回渲染(请求,“login.html”)
  
  def mainmenu(请求):
  打印(cookie:, request.COOKIES)
  print (sessionname:, request.session.get(“用户名”))
  print (sessionpwd:, request.session.get (pwd))
  如果request.session.get(“用户名”,没有一个):
  返回渲染(请求,“mainmenu.html”)
  其他:
  返回重定向('/登录/') 
  

饼干和会话
饼干和会话
五。欢迎关注笔者公众号
饼干和会话

饼干和会话