• Cookie 和 Session


    本文主要讲解一下 Cookie 和 Session 的关系和区别,大家都知道 Session 比 Cookie 安全,Session 是存储在服务器端的,Cookie 是存储在客户端的,然而更详细的说,恐怕就不太清楚了


    1. 什么是 HTTP

    首先要先介绍一下什么是 HTTP

    HTTP:超文本传输协议,它是一个应用层协议,是万维网数据通信的基础,通过 HTTP 协议请求的资源由统一资源标识符(URL)来标识

    HTTP 是无状态协议,说明它不能以状态来区分和管理请求和响应,所以服务器单单从网络连接上无法得知客户身份

    所以就需要给客户端们办法一个通行证,每人一个,无论谁访问都必须带有通行证,这样服务器就可以通过通行证得知客户身份了。这就是 Cookie 的工作原理

    2. Cookie

    上面说过 Cookie 就像是通行证,通行证上保存的就是客户端的用户信息,随着每次请求发送到服务器

    Cookie会根据响应报文里的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下客户端再向服务端发起请求时,客户端会自动在请求报文中加入Cookie值之后发送出去.

    之后服务端发现客户端发送过来的Cookie后,会检查是哪个客户端发送过来的请求,然后对服务器上的记录,最后得到了之前的状态信息。

    如下,是访问百度官网时,响应标头中的 Set-Cookie

    请添加图片描述

    2.1 图解 Cookie 工作原理

    请添加图片描述

    请添加图片描述

    3. Session

    服务器执行 Session 机制的时候会生成 SessionId,这个 Id 会通过 Set-Cookie 发送到客户端,并会被客户端保存下来,保存的容器就是 Cookie

    客户端每次请求都会把这个 Id 值放在请求的头部发送给服务器

    因此当完全禁用掉浏览器的 Cookie 时,服务器的 Session 也会不能使用

    3.1 图解 Session 工作原理

    请添加图片描述

    4. Cookie 与 Session 的区别

    1. Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上,但是服务器的 Session 的实现对客户端的 Cookie 有依赖关系
    2. Cookie 不是很安全,别人可以分析放在本地的 Cookie 并进行 Cookie 欺骗,考虑安全应当使用 Session
    3. Session 会在一定时间内保存在服务器上。当访问增多,会比较占用服务器性能
  • 相关阅读:
    Qt_基础
    【小程序项目开发-- 京东商城】uni-app之分类导航区域
    Redis详解(3)基础入门(2)
    [springboot]jasypt加密
    ubuntu 22.04下面安装cuda、cudnn等的配置过程
    JDBC-day03(BLOB类型字段,批量插入)
    macos端文件夹快速访问工具 Default Folder X 最新for mac
    服务注册发现_actuator微服务信息完善
    计算机的磁盘与中断介绍
    女朋友问我深浅copy到底是什么?
  • 原文地址:https://blog.csdn.net/m0_56975154/article/details/127643291