虚拟主机发布网站吗,广告在线设计,做农资的网站,利用海康威视做直播网站#x1f490;个人主页#xff1a;初晴~
#x1f4da;相关专栏#xff1a;计算机网络那些事 一、Cookie是什么#xff1f;
Cookie的存在主要是为了解决HTTP协议的无状态性问题#xff0c;即协议本身无法记住用户之前的操作。 ⽆状态 的含义指的是: 默认情况… 个人主页初晴~
相关专栏计算机网络那些事 一、Cookie是什么
Cookie的存在主要是为了解决HTTP协议的无状态性问题即协议本身无法记住用户之前的操作。 ⽆状态 的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信和下次通信之间没有直接的联系 但是实际开发中我们很多时候是需要知道请求之间的关联关系的 例如登陆⽹站成功后, 第⼆次访问的时候服务器就能知道该请求是否是已经登陆过了 上述图中的 令牌 通常就存储在 Cookie 字段中。 ⽐如去医院挂号 1. 看病之前先挂号. 挂号时候需要提供⾝份证号, 同时得到了⼀张 就诊卡, 这个就诊卡就相当于患者的 令牌. 2. 后续去各个科室进⾏检查, 诊断, 开药等操作, 都不必再出⽰⾝份证了, 只要凭就诊卡即可识别出当前患者的⾝份. 3. 看完病了之后, 不想要就诊卡了, 就可以注销这个卡. 此时患者的⾝份和就诊卡的关联就销毁了. (类似于⽹站的注销操作) 4. ⼜来看病, 可以办⼀张新的就诊卡, 此时就得到了⼀个新的 令牌 此时在服务器这边就需要记录令牌信息, 以及令牌对应的⽤⼾信息, 这个就是 Session 机制所做的⼯作 二、Session是什么
Session会话是Web开发中用于管理用户状态的一种机制。它允许服务器在多个页面请求或多个浏览器会话之间保持用户的状态信息。
所谓的会话其实就可以理解为 “对话” 在计算机领域会话是⼀个客⼾与服务器之间的不中断的请求响应。对客⼾的每个请求服务器能够识别出请求来⾃于同⼀个客⼾。当⼀个未知的客⼾向Web应⽤程序发送第⼀个请求时就开始了⼀个会话。当客⼾明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时会话就结束了 ⽐如我们打客服电话 每次打客服电话是⼀个会话. 挂断电话会话就结束了 下次再打客服电话⼜是⼀个新的会话 如果我们⻓时间不说话没有新的请求会话也会结束 服务器同⼀时刻收到的请求是很多的。服务器需要清楚的区分每个请求是属于哪个⽤⼾也就是属于哪个会话就需要在服务器这边记录每个会话以及与⽤⼾的信息的对应关系。 Session是服务器为了保存⽤⼾信息⽽创建的⼀个特殊的对象 Session的本质就是⼀个 哈希表, 存储了⼀些键值对结构. Key 就是SessionID, Value 就是⽤⼾信息(⽤⼾信息可以根据需求灵活设计) SessionId 是由服务器⽣成的⼀个 唯⼀性字符串从 Session 机制的⻆度来看这个唯⼀性字符串称为 SessionId 。但是站在整个登录流程中看待也可以把这个唯⼀性字符串称为 token 。 上述例⼦中的令牌ID就可以看做是SessionId只不过令牌除了ID之外还会带⼀些其他信息⽐如时间、签名等 1. 当⽤⼾登陆的时候服务器在 Session 中新增⼀个新记录并把 sessionId返回给客⼾端 (通过 HTTP 响应中的 Set-Cookie 字段返回) 2. 客⼾端后续再给服务器发送请求的时候需要在请求中带上 sessionId。(通过 HTTP 请求中的 Cookie 字段带上) 3. 服务器收到请求之后根据请求中的 sessionId在 Session 信息中获取到对应的⽤⼾信息 再进⾏后续操作。找不到则重新创建Session并把SessionID返回 Session 默认是保存在内存中的。如果重启服务器则 Session 数据就会丢失 三、Cookie 与 Session 的区别
1、存储位置 Cookie存储在客户端用户的浏览器中通常以键值对的形式存在。Session存储在服务器端客户端通常只存储一个Session ID用于标识对应的服务器端Session。 2、存储大小和数量限制 Cookie每个Cookie的大小一般限制在4KB左右每个域名下可以存储的Cookie数量有限大约20个。Session理论上没有严格的大小限制但受到服务器存储空间的限制。Session可以存储更多的数据。 3、生命周期 Cookie可以设置过期时间浏览器会在过期后删除Cookie或者用户可以手动清除。Session依赖于服务器的配置通常在用户关闭浏览器或Session超时后结束。 4、安全性 Cookie由于存储在客户端更容易受到跨站脚本攻击XSS和跨站请求伪造CSRF等攻击安全性较低。Session由于存储在服务器端不易被篡改相对更安全。但是Session ID的传输需要安全保护以防止Session劫持。 5、使用场景 Cookie适用于存储不太敏感的数据如用户偏好设置、会话标识符等。Session适用于存储敏感数据如用户的登录状态、购物车内容等。 6、传输 Cookie每次HTTP请求都会自动包含在请求头中发送给服务器增加了HTTP请求的大小。Session只有Session ID在客户端和服务器之间传递实际的Session数据存储在服务器端减少了网络传输。 7、控制权 Cookie由客户端浏览器控制用户可以禁用Cookie或手动删除。Session由服务器控制服务器可以创建、修改和删除Session。 8、跨域访问 Cookie可以设置为跨域访问允许多个相关联的域名访问相同的Cookie。Session通常局限于创建它的域名除非通过特定的机制如Session联邦来实现跨域Session共享。 Cookie 和 Session之间主要是通过 SessionId 关联起来的SessionId 是 Cookie 和 Session 之间的桥梁 注意 Cookie 和 Session 经常会在⼀起配合使⽤但是不是必须配合 完全可以⽤ Cookie 来保存⼀些数据在客⼾端。这些数据不⼀定是⽤⼾⾝份信息也不⼀定是 SessionId Session 中的sessionId 也不需要⾮得通过 Cookie/Set-Cookie 传递⽐如通过URL传递 那么本篇文章就到此为止了如果觉得这篇文章对你有帮助的话可以点一下关注和点赞来支持作者哦。如果有什么讲的不对的地方欢迎在评论区指出希望能够和你们一起进步✊