当前位置: 首页 > news >正文

深入了解Cookie和Session

目录

  • 什么是会话?
  • HTTP超文本传输协议
  • Cookie
    • Cookie的产生
    • Cookie的缺陷
  • Session
    • Session的产生
    • 如果如果浏览器禁用Cookie
  • Cookie和Session的区别

什么是会话?

  • 用户打开浏览器在浏览器中打开超链接进入web资源最后关闭的整个流程称为会话
  • 有状态会话:能够记录用户的访问状态,知道之前有谁访问过,当前是谁在访问
  • 无状态会话:不记录访问信息,不知道每次访问的用户是否相同

1

HTTP超文本传输协议

http是无状态的,不会保存每次提交的信息,因此我们需要保存会话的技术,如果将状态保存在服务端,则称为服务端技术 S e s s i o n Session Session;如果状态保存在客户端,则称为客户端技术 C o o k i e Cookie Cookie

Cookie

cookie是由服务器创建,通过响应发送给客户端,并保存在浏览器上的一小块信息,它会在浏览器下次再次发起请求的时候被携带并发送到服务器上。

cookie是不可跨域的,每一个域名下都有自己的cookie,而且这些cookie是互通的,但是不同的域名之间的cookie是不能够通信的。
比如 www.baidu.com 的cookie不能够访问 www.csdn.net 的cookie。
这样做的目的是为了安全进行考虑。

Cookie的产生

  1. 客户端在首次访问时,需要编写访问请求url。
  2. 由服务端创建cookie对象并通过response将cookie传递给客户端。
  3. 客户端响应服务端的cookie信息,并存储。
  4. 再次访问时携带信息进行访问。
  5. 服务端可以从请求中获取到cookie信息。

2

Cookie的缺陷

  • cookie的大小受到限制,一般会被浏览器限制为4kb或者8kb的大小。
  • 同一个域名下的cookie的数量受到限制,一般被限制为20个。
  • cookie在前端可以直接被修改。
  • 某些浏览器可能会禁用cookie,这就会导致会话状态无法保存。

Session

session也用于记录用户状态。

Session的产生

  1. 客户端在首次访问时,需要编写访问请求url。
  2. 由服务端创建session对象,每个session对应一个jssesionid,将jssesionid传递给客户端。
  3. 客户端响应服务端的jssesionid信息,并存储到cookie。
  4. 再次访问时携带jssesionid进行访问。
  5. 服务端可以从请求中获取到jssesionid信息。

3

如果如果浏览器禁用Cookie

需要注意的是:如果浏览器禁用cookie,session的值也就无法在客户端保存,读取时就不能通过客户端进行读取。请求转发重定向的行为可能会受到一些影响。

  1. 请求转发(Forwarding):是一种服务器行为,当客户端请求到达后,服务器进行转发。
    • 转发的过程中地址栏的地址不发生改变,请求从客户端发送到服务器,然后由服务器转发到另一个服务器或资源。
    • 当Cookie被禁用时,服务器可能无法识别和跟踪用户的会话。因此,当请求转发到另一个服务器或资源时,新的服务器可能无法识别用户的身份或状态。
    • 这可能导致用户在请求转发后被视为新用户,并需要重新登录或重新输入个人信息。
  2. 重定向(Redirection):一种服务器指导的客户端行为。客户端发起一个请求给服务器接收处理之后,服务器给客户端一个响应(一个新的地址),当客户端接受到新的地址之后,马上发起第二次请求,服务器接收并响应。
    • 重定向是指将用户的请求从服务器A重定向到服务器B,然后返回一个新位置的响应。
    • 当Cookie被禁用时,与请求转发类似,服务器可能无法识别和跟踪用户的会话。因此,当用户被重定向到另一个服务器时,新的服务器可能无法识别用户的身份或状态。
    • 这可能导致用户在重定向后被视为新用户,并需要重新登录或重新输入个人信息。

需要注意的是,即使cookie被禁用,某些情况下仍然可以使用其他技术来跟踪用户状态,例如通过URL参数、隐藏表单字段或服务器端会话来传递必要的信息。然而,这些方法可能不如使用cookie方便和高效。

因此,当设计Web应用程序时,开发人员应该考虑到用户可能禁用cookie的情况,并采取适当的措施来确保应用程序的正常运行和用户体验。

Cookie和Session的区别

  1. 保存位置不同
    cookie数据存放在客户的浏览器(客户端)上,session数据放在服务器上,但是服务端的session的实现对客户端的cookie有依赖关系的。

  2. 存储大小不同
    单个cookie保存的数据不能超过4K。每个站点cookie个数有限制,比如IE8为50个、Firefox为50个、Opera为30个;session没有容量限制。

  3. 传输量不同
    在每次的访问中,cookie会传输所有的cookie内容,session只需要传输一个Session ID就可以了。

  4. 安全性不同
    cookie存放在用户本地,可以被轻松访问和修改并进行cookie欺骗,安全性不高;session存储于服务器,比较安全。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Cgroup Driver配置异常导致的节点k8s涉及到的pod无法启动问题的处理
  • 文心快码(Baidu Comate)初体验
  • Upload-labs靶场通过攻略
  • OpenHarmony 实战开发——应用HAP包签名
  • auto的使用场景
  • 跨境电商库存管理:销毁成本的关键因素解析
  • 设计模式 15 解释器模式
  • 二手车交易App开发前景分析
  • 基于OpenCV+MFC的KCF测速软件
  • redis通用命令
  • SpringWeb 重定向
  • 损失函数、成本函数cost 、最大似然估计
  • Linux 中的中断响应机制
  • 数学建模学习(122):基于PPF-AHP的多准则决策分析—以城市交通枢纽选址为例
  • Part4-DOM学习笔记-获取元素属性及节点操作
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • ComponentOne 2017 V2版本正式发布
  • Java 23种设计模式 之单例模式 7种实现方式
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Sublime Text 2/3 绑定Eclipse快捷键
  • sublime配置文件
  • 经典排序算法及其 Java 实现
  • 理清楚Vue的结构
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 用quicker-worker.js轻松跑一个大数据遍历
  • nb
  • 【干货分享】dos命令大全
  • 积累各种好的链接
  • ​低代码平台的核心价值与优势
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十) 初识 Docker file
  • (十五)使用Nexus创建Maven私服
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .gitignore文件—git忽略文件
  • .net MySql
  • .NET 反射的使用
  • .net程序集学习心得
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @Bean, @Component, @Configuration简析
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @RestController注解的使用
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [C puzzle book] types
  • [C++] new和delete