zoukankan      html  css  js  c++  java
  • Cookie 🤖&🎃 Session

    最近写项目的时候,会涉及到Cookie和Session方面的知识.

    所以就去查了查. 总结下

    Cookie是由客户端保存的小型文本文件,内容为一系列的键值对.

    • Cookie是由HTTP服务器设置的,保存在浏览器中.

    一定是在浏览器上,  是服务器设置的

    cookie不属于HTTP协议范围. 由于HTTP协议无法保持状态,但实际情况我们又需要保持状态,因此cookie就顺应而生.


    工作原理 : 由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带着cookie,这样服务器就能通过这个cookie的内容来判断现在访问浏览器的是谁了!

    那么这个session到底有什么用?   有cookie了还需要session吗?

    首先,我们来分析一波.
    1. cookie最大支持4096字节,而且 cookie本身保存在客户端! 它是明文传输的,只要服务器设置过一次  authed=true|xxxxxx  ,我就可以知道true的签名是xxxxxx了嘛.  我之后是不是就可以用这个签名来欺骗服务器了.因此cookie中最好不要放敏感数据.一般来讲cookie中只会放一个Session ID ,而Session 存储在服务器端.
    2. Session可以存储在HTTP服务器的内存中,也可以存在内存数据库中(radis),对于重量级的应用甚至可以存储在数据库中.
    
    ***
    
    我们以存储在redis中的Session为例,还是考察如何验证用户登录状态的问题。
    用户提交包含用户名和密码的表单,发送HTTP请求。
    服务器验证用户发来的用户名密码。
    如果正确则把当前用户名(通常是用户对象)存储到redis中,并生成它在redis中的ID。
    这个ID称为Session ID,通过Session ID可以从Redis中取出对应的用户对象, 敏感数据(比如authed=true)都存储在这个用户对象中。
    设置Cookie为sessionId=xxxxxx|checksum并发送HTTP响应, 仍然为每一项Cookie都设置签名。
    用户收到HTTP响应后,便看不到任何敏感数据了。在此后的请求中发送该Cookie给服务器。
    服务器收到此后的HTTP请求后,发现Cookie中有SessionID,进行放篡改验证。
    如果通过了验证,根据该ID从Redis中取出对应的用户对象, 查看该对象的状态并继续执行业务逻辑。
    Web应用框架都会实现上述过程,在Web应用中可以直接获得当前用户。 相当于在HTTP协议之上,通过Cookie实现了持久的会话。这个会话便称为Session。
    

    嫌上面字多的,直接看这!!!


    浏览器请求访问服务器, 如果请求路径不是login, 会判断session中是否有登录状态,如果没有,跳转到login页面.

    第一次访问login的时候,服务端会分配一个随机字符串给客户端, 当做cookie里面sessionID的值, 当用户登录成功后,保存一个状态(例如 >>request.session('username') = username或者直接写一个request.session('is_login') =True…只要能表示状态,怎么写都行) . 而且因为前端使用的是ajax,返回页>>面没用,所以定义了一个字典.里面存储的登录状态和错误信息.

    当用户发送第二次请求的时候,django会帮我们做哪些事?

    首先拿着cookie中的sessionID去 服务端的session中比对.
    如果比对成功,说明是该用户,会继续访问.如果没有比对成功,说明用户未登录,返回登录页面.

  • 相关阅读:
    Redis面试总结
    文件上传文件的权限lnmp 环境配置,尤其整个项目复制过来
    linux cat /etc/passwd 说明
    php上传文件与图片到七牛的实例详解
    一起谈.NET技术,参数编码 完全解决方案 狼人:
    一起谈.NET技术,在.NET中使用域对象持续模式 狼人:
    一起谈.NET技术,从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势 狼人:
    一起谈.NET技术,从扩展方法到流畅的程序体验(一) 狼人:
    一起谈.NET技术,构建高性能ASP.NET站点之一 剖析页面的处理过程(前端) 狼人:
    一起谈.NET技术,ASP.NET MVC 2 验证消息本地化策略扩展 狼人:
  • 原文地址:https://www.cnblogs.com/Wormhole-f/p/7902572.html
Copyright © 2011-2022 走看看