• 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 会在一定时间内保存在服务器上。当访问增多,会比较占用服务器性能
  • 相关阅读:
    vue中getter.js作用是什么呢
    使用V2V功能将VMware平台虚拟机迁移至OpenStack平台
    【pm4py】process mining 读取log生成model/net/tree
    工地木模板多少钱一张?
    基于射频指纹的LoRa网络安全方案研究
    队列(Queue)的详解
    系统集成|第二十章(笔记)
    STM32 HAL库USART的接收数据方法实现
    torch.manual_seed()解析
    【python函数】内置函数slice()用法解析
  • 原文地址:https://blog.csdn.net/m0_56975154/article/details/127643291