浏览器【详解】Cookie(含Cookie的起源,属性,个数和大小限制,作用,优点,缺点,JS 的操作方法等)

news2024/11/25 1:02:05

什么是 Cookie ?

Cookie 是一段不超过 4KB 的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制 Cookie 有效期、安全性、使用范围的可选属性组成。

浏览器为什么需要 Cookie ?

HTTP 协议是无状态的,导致同一个客户端连续两次发送请求给服务器,服务器也识别不出这是同一个客户端发送的请求。

为了方便网站辨别用户身份,浏览器引入了 Cookie 机制,具体流程如下:

  1. 客户端发送 HTTP 请求到服务器
  2. 服务器收到 HTTP 请求时,在响应头里面添加一个 Set-Cookie 字段
  3. 浏览器收到响应后将 Cookie 信息保存到本地(不同浏览器对应各自的保存路径)
  4. 之后对该服务器每一次请求中都通过 Cookie 字段将 Cookie 信息发送给服务器。

可以参考学生和学校的关系来理解:

学生(客户端),第一次入学时,去学校(服务器)办理入学后,学校会颁发(Set-Cookie)一个学生证(Cookie 信息),之后每次学生进入学校,都需要带上这个学生证,以便学校知道你是哪一位学生。

Cookie 的属性

属性含义
NameCookie的名称
Value对应名称的值
DomainCookie的域名
PathCookie生效的路径
Expires过期时间,过了这个时间后Cookie失效
Max-age生效时间,表示Cookie在多长时间后失效
SizeCookie的长度,为name和value的长度和
HttpOnly防止通过JavaScript访问Cookie
Secure只在HTTPS协议的情况下才会将Cookie传到后端
SameSite是否允许跨站请求时发送Cookie
Partitioned第三方Cookie分区
Priority优先级

Expires 过期时间

Cookie 的过期时间,如 Expires=Wed, 21 Oct 2015 07:28:00 GMT;

会话性 Cookie
当 Expires 的值为 Session 或未指定时,该 Cookie 是会话性 Cookie,Cookie 信息保存在客户端内存中,并在用户关闭浏览器时失效。但有些浏览器提供了会话恢复功能,这种情况下即使关闭了浏览器,会话期 Cookie 也会被保留下来。

持久性 Cookie
会话性 Cookie 之外的都是持久性 Cookie,会将 Cookie 信息保存在用户的硬盘中,直至过期或者清除 Cookie。

Max-Age 最长寿命

设置在 Cookie 失效之前需要经过的秒数(单位为秒),如 Max-Age=604800;

  • max-Age 属性为正数时,浏览器会将其持久化,即写到对应的 Cookie 文件中。
  • max-Age 属性为负数,则表示该 Cookie 是一个会话性 Cookie。
  • max-Age 为 0 时,会立即删除这个 Cookie。
  • 假如 Expires 和 Max-Age 都存在,Max-Age 优先级更高。

Domain 域名

指定 Cookie 可以送达的主机名,如 Domain=baidu.com;

  • 若没有指定,那么默认值为当前文档访问地址中的主机部分(但是不包含子域名)。
  • 若指定了,如 Domain 是 .taobao.com,则无论是 a.taobao.com 还是 b.taobao.com 都可以使用 Cookie。
  • 不能跨域设置 Cookie,如阿里域名下的页面不能把 Domain 设置成百度

Path 路径

指定一个 URL 路径,如 Path=/docs

当请求的资源的路径中包含这个 URL 路径 时,才可以发送 Cookie 首部。

如 /docs/Web/ 下的资源会带 Cookie 首部, /test 则不会携带 Cookie 首部。

Domain 和 Path 共同指定了 Cookie 应该发送给哪些 URL。

SameSite 限制第三方 Cookie

  • 值为 Strict 时,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。

    比如,当前网页有一个 GitHub 链接,用户点击跳转就不会带有 GitHub 的 Cookie,跳转过去总是未登录状态。

  • 值为 Lax 时,导航到第三方网址的 Get 请求(链接,预加载请求,GET 表单)可以发送第三方 Cookie

  • 值为 None 时,即关闭限制。(必须同时设置Secure属性才能生效)

在这里插入图片描述

之前Chrome浏览器的 SameSite 默认值为 None ,Chrome80 后SameSite 默认值是 Lax。

  • 同源策略的「同源」判断比较严格,要求两个 URL 的协议/主机名/端口都一致。

  • Cookie中的「同站」判断比较宽松:只要两个 URL 的 eTLD+1 相同即可。

    eTLD 表示有效顶级域名,注册于 Mozilla 维护的公共后缀列表(Public Suffix List)中,例如,.com、.co.uk、.github.io 等。

    eTLD+1 则表示,有效顶级域名+二级域名,例如 taobao.com 等。

    www.taobao.com 和 www.baidu.com 是跨站
    www.a.taobao.com 和 www.b.taobao.com 是同站
    a.github.io 和 b.github.io 是跨站

跨站和跨域的主要区别

  • 子域名不同时 属于跨域 不属于跨站,例如 a.jzplp.com与b.jzplp.com
  • 端口不同时 属于跨域 不属于跨站,例如 jzplp.com:8000与jzplp.com:9000
  • IP不同时(如果直接使用IP访问网站) 属于跨域 属于跨站

Priority 优先级

当Cookie的数量超过限制时,浏览器会清除一部分Cookie。

Priority属性(值有三种: Low, Medium, High)用来定义Cookie的优先级,低优先级的Cookie会优先被清除。

Cookie 的个数和大小限制

IE6.0IE7.0/8.0OperaFirefoxSafariChrome
cookie个数每个域为20个每个域为50个每个域为30个每个域为50个没有个数限制每个域为53个
cookie大小4095个字节4095个字节4096个字节4097个字节4097个字节4097个字节

JavaScript 操作 Cookie

详见 https://blog.csdn.net/weixin_41192489/article/details/116882349

Cookie 的作用

  • 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为等)

Cookie 的优点

1、易于使用和实现

实现cookie的使用要比任何其他Internet协议容易得多。

2、占用更少的内存

不需要任何服务器资源,并存储在用户的计算机上,因此不会给服务器带来额外的负担。

3、持久性

Cookie最强大的一个方面就是持久性。当在客户端的浏览器上设置Cookie时,它可以持续数天,数月甚至数年。这样可以轻松保存用户首选项和访问信息,并在用户每次返回站点时保持此信息可用。此外,由于Cookie存储在客户端的硬盘上,因此如果服务器崩溃,它们仍然可用。

4、 透明性

Cookie透明地工作,用户不知道需要存储的信息。

5、易于管理

大多数浏览器都可以让用户轻松清除浏览历史记录。只需转到工具,清除历史记录并选择Cookie即可。

Cookie存储在用户硬盘驱动器上的cookie.txt下的文本文件中,因为它是一个文本文件,我们可以使用任何查看器或文本编辑器来显示,编辑和删除它们。

Cookie 的缺点

  • 隐私问题:Cookie会跟踪用户访问过的所有网站,这可能引发隐私担忧,因为第三方(如广告商或其他用户)可能能够访问这些存储的信息。
  • 安全性问题:Cookie是以明文形式存储的,这可能会带来安全风险,因为任何人都可以打开并篡改Cookie。此外,Cookie容易被黑客入侵和修改。
  • 难以解密:虽然可以手动加密和解密Cookie,但这个过程需要额外的时间,影响应用程序性能。
  • 大小和数量限制:Cookie的大小(一般为4KB)和数量(一般每个站点20个)都存在限制,这可能限制了其能够存储的信息量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1718208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

atk-esp8266-01刷新固件-链接-配置

1.刷新固件 加载固件: 编写地址: 2.链接IO-->GND 关闭其他所有占用此串口的软件; 重新上电 开始刷新固件: 刷新完成; 拆掉IO与GND链接。 3.配置 ATCWMODE_DEF3 //配置模式 ATRST //重启 …

Linux学习笔记(清晰且清爽)

本文首次发布于个人博客 想要获得最佳的阅读体验(无广告且清爽),请访问本篇笔记 Linux安装 关于安装这里就不过多介绍了,安装版本是CentOS 7,详情安装步骤见下述博客在VMware中安装CentOS7(超详细的图文教…

3d模型移动中心点偏移太远怎么解决?---模大狮模型网

在3D建模和动画制作中,移动模型时确保中心点的准确性至关重要。然而,有时候在移动模型时,中心点可能会偏移得太远,导致操作不便甚至影响到后续的工作流程。本文将介绍在3D模型移动中心点偏移太远时的常见原因,并提供解…

基于Linux的文件操作(socket操作)

基于Linux的文件操作(socket操作) 1. 文件描述符基本概念文件描述符的定义:标准文件描述符:文件描述符的分配: 2. 文件描述符操作打开文件读取文件中的数据 在linux中,socket也被认为是文件的一种&#xff…

JSON源码类学习

json源码学习 parse把json转换成Object parseObject转换为jsonObject parseArray从字符串数组解析成真正的数组 tojsonString把真正的json解析json 数组的方法 作用:类型转换 为什么要做类型转换 开发一个方法验证 这个方法先封装方法,是否为json …

长难句打卡5.31

In a workplace that’s fundamentally indifferent to your life and its meaning, office speak can help you figure out how you relate to your work—and how your work defines who you are. 在一个对你的生活和生活意义漠不关心的工作场所中,办公室语言可以…

绿色积分合法化 时代牺牲品!云联惠

各位朋友,我是吴军,在科技产业界从事多年市场分析工作。今天,我想与你们共同探讨一个曾引起广泛关注的企业案例——云联惠。 云联惠,这个曾被誉为商业创新典范的平台,一度风光无限。在其鼎盛时期,它不仅吸引…

【Python】解决Python报错:IndexError: queue index out of range

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

让WSL内核使用BBR拥塞控制算法

使用git命令从Linux内核的Git仓库中获取源代码,$ git clone --depth 1 https://github.com/microsoft/WSL2-Linux-Kernel.git,找到对应的内核版本$ git log --grep="5.15.146.1-microsoft-standard-WSL2",回退到本机安装的内核版本$ git checkout <commit-id&…

失之毫厘差之千里之load和loads

起源 最近在读pandas库的一些文档的时候&#xff0c;顺便也会将文档上的一些demo在编辑器中进行运行测试&#xff0c;其中在读到pandas处理Json数据这一节的时候&#xff0c;我还是像往常一样&#xff0c;将文档提供的demo写一遍&#xff0c;结果在运行的时候&#xff0c;直接…

Linux - 磁盘管理1

1.磁盘的分区 1.1 磁盘的类型&#xff08;标签&#xff09; MBR&#xff1a; ① 最大支持2T以内的硬盘 ② 有主分区p 拓展分区e 逻辑分区l之分 > 主分区编号1-4&#xff0c;主分区可以格式化使用 拓展分区编号1-4&#xff0c;拓展分区不能格式化 拓展分区最多能有1个&…

01Linux以及操作系统概述

课程目标 1.了解现代操作系统的整体构成及发展历史 2.了解Linux操作系统及其分支版本 3.直观上理解服务器端与桌面端版本的区别 课程实验 1.通过对CentOS和Ubuntu的演示&#xff0c;直观理解Linux与Windows的异同 课堂引入 本章内容主要为大家详细讲解Linux操作系统(以下简…

STM32—USART 串口通讯

目录 1 、 电路构成及原理图 2 、编写实现代码 main.c usart.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 STM32F103RCT6开发板——全集成开发板,让开发更简单&#xff01; 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 …

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(二)

整期笔记索引 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试&#xff08;一&#xff09; 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试&#xff08;二&#xff09; 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试&#xff08;…

安防监控视频平台LntonCVS视频监控汇聚平台遏制校园暴力保护校园学生安全应用方案

未成年人被誉为祖国的花朵&#xff0c;是我们国家的未来。然而&#xff0c;最近频繁曝出的未成年霸凌事件却引发了社会的广泛关注。这些事件手段残忍&#xff0c;事态恶劣&#xff0c;引发了全社会对如何保护未成年身心健康、规避霸凌事件发生的深刻思考。 为了更好地保障学生的…

Vitalik:Layer2 是以太坊社区文化的延伸

原文标题&#xff1a;《Layer 2s as cultural extensions of Ethereum》 撰文&#xff1a;Vitalik Buterin&#xff0c;以太坊联合创始人 编译&#xff1a;Chris&#xff0c;Techub News 在我最近关于 L1 和 L2 扩容差异的文章中&#xff0c;我最终得出的结论是&#xff0c; …

惠普发布最新财报,对AIPC寄予厚望

KlipC报道&#xff1a;5月29日&#xff0c;惠普发布了第二财季财报&#xff08;截止2024年4月30日&#xff09;&#xff0c;净营收128亿美元&#xff0c;同比下降0.8%&#xff0c;但是高于市场预期的126亿美元&#xff1b;净利润6亿美元同比下降42%。调整后美股净利0.82美元&am…

Navicat使用ssh隧道连接mysql数据库

转载请标明出处&#xff1a;http://blog.csdn.net/donkor_/article/details/139352748 文章目录 前言新建连接MySql,填写ssh隧道信息方式1&#xff1a;使用密码方式连接方式二&#xff1a;使用密钥方式连接 填写常规信息总结 前言 使用ssh隧道连接数据库&#xff0c;方便本机…

百度地图2

覆盖物 叠加层 添加叠加层 GroundOverlay(bounds: Bounds, opts: GroundOverlayOptions):地图上的地面叠加层。 Bounds(sw: Point, ne: Point):表示地理坐标的矩形区域。sw表示矩形区域的西南角&#xff0c;参数ne表示矩形区域的东北角。 GroundOverlayOptions&#xff1a…

[Redis]Hash类型

基本命令 hset命令 设置 hash 中指定的字段&#xff08;field&#xff09;的值&#xff08;value&#xff09; 返回值&#xff1a;添加的字段的个数&#xff08;注意是添加的个数&#xff0c;而不包括修改的&#xff09; hset key field value [field value ...] hget命令 …