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

HTTP:十.cookie机制

Cookie概念及类型

HTTP cookie,简称cookie,又称数码存根、“网站/浏览+魔饼/魔片”等,是浏览网站时由网络服务器创建并由网页浏览器存放在用户计算机或其他设备的小文本文件。Cookie使Web服务器能在用户的设备存储状态信息(如添加到在线商店购物车中的商品)或跟踪用户的浏览活动(如点击特定按钮、登录或记录历史)。

cookie 的起源

早期的 Web 应用面临的最大问题之一就是如何维持状态。简言之,服务器无法知道两个请求是否来自于同一个浏览器。当时,最简单的办法就是在请求的页面中插入一个 token,然后在下次请求时将这个 token 返回至服务器。这需要在页面的 form 表单中插入一个包含 token 的隐藏域,或者将 token 放在 URL 的 query 字符串中来传递。这两种方法都需要手动操作,而且极易出错。

当时网景通讯的一名员工 Lou Montulli,在 1994 年将 “magic cookies” 的概念应用到 Web 通讯中。他试图解决 Web 的第一个购物车应用,现在购物车成了购物网站的支柱。他的原始说明文档提供了 cookie 工作原理的基本信息,该文档后来被作为规范纳入到 RFC 2109(大多数浏览器的实现参考文档)中,最终被纳入到 RFC 2965 中。Montulli 也被授予 cookie 的美国专利。网景浏览器在它的第一个版本中就开始支持 cookie,现在所有 Web 浏览器都支持 cookie。

HTTP Cookie 类型

**会话 cookie:**这些 cookie 在用户访问网站时临时存储信息。它们存储在用户的浏览器中,通常在用户关闭浏览器时被删除。

**持久性 cookie:**即使在用户关闭浏览器后,这些 cookie 仍会保留在用户的计算机上。它们用于记住用户的偏好并帮助实现个性化。

**安全 cookie:**这些 cookie 有助于保护敏感信息,如密码和信用卡号。

**第三方 cookie:**这些 cookie 由第三方网站创建,可在多个网站上跟踪用户活动。

**Flash cookies:**这些 cookie 存储有关视频和音频文件的信息。它们存储在用户的计算机上,用于帮助流媒体。

Cookie原理

用户第一次请求服务器时,服务器返回一个带Set-Cookie(Set-Cookie1)首部的报文,值为键值对,描述了cookie的名字、值、域、路径等信息,然后客户端接下来每次访问服务器的时候都会带上一个Cookie首部的报文,它的值刚好是前面响应报文返回的名字键值对,从而达到验证用户身份的信息。
Cookie过程图:
在这里插入图片描述cookie的设置以及发送过程:

  1. 客户端发送一个http请求到服务器端
  2. 服务器端发送一个http响应到客户端,其中包含Set-Cookie头部
  3. 客户端发送一个http请求到服务器端,其中包含Cookie头部
  4. 服务器端发送一个http响应到客户端
Cookie的属性

value属性

value属性是必需的,它是一个键值对,用于指定Cookie的值。

http://www.xdnf.cn/news/42337.html

相关文章:

  • Kotlin实现Android应用保活方案
  • 基于maven-jar-plugin打造一款自动识别主类的maven打包插件
  • 【C++详解】C++入门(一)
  • PyTorch 深度学习实战(39):归一化技术对比(BN/LN/IN/GN)
  • 基于Docker+k8s集群的web应用部署与监控
  • 操作系统是如何运行的?
  • 【图像处理基石】什么是去马赛克算法?
  • 维普期刊(瑞数6)分析
  • 什么是 IDE?集成开发环境的功能与优势
  • iOS 应用性能测试工具对比:Xcode Instruments、克魔助手与性能狗
  • 指针(3)
  • 常用算法解析:从基础排序到图论应用
  • 【Hot100】 240. 搜索二维矩阵 II
  • 霍尔三维结构
  • QML中日期处理类
  • prim最小生成树+最大生成树【C++】板子题
  • 缓存 --- 缓存击穿, 缓存雪崩, 缓存穿透
  • 【连接池-55】MySQL数据库连接池:原理、实现与最佳实践
  • 缓存 --- Redis的三种高可用模式
  • 14【结构体 Struct】定义、实例化与方法:封装数据与行为
  • css3新特性第三章(文本属性)
  • Linux下加载可执行文件所在目录下的so的方法
  • 实操基于MCP驱动的 Agentic RAG:智能调度向量召回或者网络检索
  • 从零开始详细讲解 Boost.Asio
  • Vue3集成Element Plus完整指南:从安装到主题定制上
  • 【Elasticsearch入门到落地】11、RestClient初始化索引库
  • 深入理解Java包装类:自动装箱拆箱与缓存池机制
  • Ubuntu 22.04 更换 Nvidia 显卡后启动无法进入桌面问题的解决
  • [密码学实战]密码服务平台部署架构详解与学习路线
  • C语言 —— 铭纹织构未诞之镜 - 预处理详解