浏览器自动携带cookie注意事项
文章目录
- 浏览器自动携带与目标域相关的 cookie 是由 HTTP 协议规范和浏览器设计共同决定的
- 一、Cookie 携带的基本规则
- 同源策略下的自动携带
- 跨域请求的受限携带
- 一、服务器端配置
- 二、客户端配置
- 三、 常见错误及注意事项
- 二、Cookie 属性的筛选逻辑
- 三、浏览器携带cookie的准则
- 1. **Cookie 的作用域(Domain 和 Path)**
- 2. **Secure 属性**
- 3. **HttpOnly 属性**
- 4. **SameSite 属性**
- 5. **Cookie 的过期时间(Expires/Max-Age)**
- 6. **Cookie 的数量和大小限制**
- 7. **请求的类型**
- 四、cookie 的 domain详解
- Cookie 的 Domain 属性匹配规则详解
- 1. **默认行为:未显式设置 Domain 时**
- 2. **显式设置 Domain 时**
- 3. **子域名与父域名的交互**
- 五、cookie属性总结
浏览器自动携带与目标域相关的 cookie 是由 HTTP 协议规范和浏览器设计共同决定的
HTTP Cookie - HTTP | MDN
前端必要懂的,完整的 HTTP cookie 指南 - 终身学习者 - SegmentFault 思否
一、Cookie 携带的基本规则
-
同源策略下的自动携带
如果请求的 URL 域名、路径、协议与 Cookie 设置的
Domain和Path属性匹配,浏览器会自动将符合条件的 Cookie 附加到请求头的Cookie字段中示例
- Cookie 设置
Domain=example.com,请求 URL 为https://example.com/api→ 携带。 - Cookie 设置
Path=/login,请求 URL 为https://example.com/login/submit→ 携带。
- Cookie 设置
-
跨域请求的受限携带
一、服务器端配置
跨域请求中 cookie 的携带受到CORS(跨域资源共享)的限制。默认情况下,浏览器不会在跨域请求中发送 cookie,除非服务器明确允许。这是因为如果服务器没有配置 CORS 头,浏览器会认为该请求不安全,从而阻止 cookie 的发送。- 为了允许跨域请求携带 cookie,服务器需要返回特定的响应头。例如,设置
Access-Control-Allow-Origin 为请求的源,而不是通配符 *,因为 * 不允许携带 cookie。此外,还需要设置Access-Control-Allow-Credentials 为 true,这样浏览器才会发送 cookie。 - 根据需求配置
Access-Control-Allow-Methods、Access-Control-Allow-Headers等 - Cookie 的
SameSite属性未设置为Strict或Lax。若需跨站携带,需设置为SameSite=None; Secure(仅限 HTTPS)
二、客户端配置
在发起跨域请求时,需显式指定携带 Cookie:
-
使用 JavaScript(如
fetch)fetch('https://api.example.com/data', {credentials: 'include' // 携带 Cookie }); -
使用
XMLHttpRequestxhr.withCredentials = true;
三、 常见错误及注意事项
- 错误 1:服务器返回
Access-Control-Allow-Origin: *时,无法携带 Cookie。
解决:必须指定具体源,而非*。 - 错误 2:服务器未返回
Access-Control-Allow-Credentials: true。
解决:添加该响应头。 - 第三方 Cookie 限制:
浏览器可能会阻止第三方 Cookie(如从<iframe>发起的跨域请求),需用户手动允许或调整浏览器设置。
二、Cookie 属性的筛选逻辑
浏览器会根据 Cookie 的以下属性决定是否发送:


三、浏览器携带cookie的准则
1. Cookie 的作用域(Domain 和 Path)
- Domain(域名):
- Cookie 会被发送到其
Domain属性指定的域名。如果Domain属性设置为example.com,那么在访问example.com及其子域名(如sub.example.com)时,该 Cookie 会被发送。 - 如果没有设置
Domain属性,则默认为当前页面的域名。
- Cookie 会被发送到其
- Path(路径):
- Cookie 会被发送到其
Path属性指定的路径及其子路径。例如,如果Path属性设置为/user,那么在访问/user、/user/profile等路径时,该 Cookie 会被发送,但在访问/admin时不会发送。 - 如果没有设置
Path属性,默认为当前页面的路径。
- Cookie 会被发送到其
2. Secure 属性
- 如果 Cookie 的
Secure属性被设置为true,那么该 Cookie 只会通过 HTTPS 协议发送,不会通过 HTTP 协议发送。这是为了防止 Cookie 在不安全的网络中被窃取。 - 如果请求是通过 HTTP 发起的,那么带有
Secure属性的 Cookie 不会被发送。
3. HttpOnly 属性
- 如果 Cookie 的
HttpOnly属性被设置为true,那么该 Cookie 不能通过 JavaScript 的document.cookie访问,但仍然会通过 HTTP 请求发送到服务器。 - 这个属性主要用于防止 XSS(跨站脚本攻击)。
4. SameSite 属性
- SameSite=Lax:
- Cookie 只会在同站请求中发送。在跨站请求中,只有在请求是 GET 请求且是导航操作(如链接点击)时,Cookie 才会被发送。
- SameSite=Strict:
- Cookie 只会在同站请求中发送,即使在跨站的 GET 请求中也不会发送。
- SameSite=None:
- Cookie 在同站和跨站请求中都会发送,但需要同时设置
Secure属性,否则浏览器不会发送该 Cookie。
- Cookie 在同站和跨站请求中都会发送,但需要同时设置
- 如果没有设置
SameSite属性,浏览器会默认按照Lax或None的行为处理,具体取决于浏览器的实现。
5. Cookie 的过期时间(Expires/Max-Age)
- 如果 Cookie 已经过期(
Expires属性指定的时间已到),那么浏览器不会发送该 Cookie。 - 如果设置了
Max-Age属性,Cookie 的有效期会根据Max-Age的值计算。
6. Cookie 的数量和大小限制
- 浏览器对每个域名的 Cookie 数量和总大小有限制。例如,大多数浏览器允许每个域名最多存储 20 个 Cookie,总大小不超过 4KB。
- 如果 Cookie 数量或大小超出限制,浏览器可能会丢弃一些旧的 Cookie。
7. 请求的类型
- 对于跨站请求(即请求的域名与当前页面的域名不同),浏览器会根据
SameSite属性决定是否发送 Cookie。 - 对于同站请求(即请求的域名与当前页面的域名相同),浏览器会根据
Domain、Path、Secure等属性决定是否发送 Cookie。
四、cookie 的 domain详解
Cookie 的 Domain 属性匹配规则详解
1. 默认行为:未显式设置 Domain 时
-
匹配范围:Cookie 默认仅作用于当前请求的域名(即设置该 Cookie 的域名),不包含子域名。
例如:
- 访问
http://www.example.com时设置的 Cookie,默认Domain=www.example.com。 - 该 Cookie 不会发送到
blog.example.com或api.example.com等子域名
- 访问
-
原理:浏览器认为未显式设置
Domain的 Cookie 仅属于当前域名,这是出于安全性和隐私保护的默认设计
2. 显式设置 Domain 时
-
匹配规则:若
Domain被显式设置为.example.com(以点开头),则 Cookie 可被主域名及其所有子域名共享。
例如:
Domain=.example.com→ Cookie 会发送给www.example.com或api.example.com- 若
Domain未以点开头(如Domain=example.com),部分浏览器可能自动补全为.example.com,但非所有浏览器均支持此行为
-
安全限制:
- 无法为顶级域名(如
.com)设置 Cookie,必须包含至少两个点(如.example.com) - 若
Domain范围过广(如.com),浏览器会拒绝存储该 Cookie
- 无法为顶级域名(如
3. 子域名与父域名的交互
-
父域名 Cookie 影响子域名:若父域名(
example.com)设置了 Cookie,子域名(api.example.com)的请求不会自动携带该 Cookie,除非显式设置Domain=.example.com -
子域名 Cookie 不影响父域名:子域名(
api.example.com)设置的 Cookie(未显式设置Domain)仅在该子域名下有效,父域名(example.com)的请求不会携带它
五、cookie属性总结
- Domain 属性决定了 cookie 属于哪个域,只有当请求的域与 cookie 的 Domain 匹配时,才会被携带。
- Path 属性限制了 cookie 在该域下的路径范围。
- SameSite 属性,它控制 cookie 是否在跨站请求中被发送,比如 Lax 或 Strict 模式。
- Secure 属性要求 cookie 只能通过 HTTPS 连接发送,而 HttpOnly 属性则防止 cookie 被 JavaScript 访问。
- 过期时间:如果 Cookie 已经过期,不会发送。
- 数量和大小限制:如果 Cookie 数量或大小超出浏览器限制,可能会被丢弃。
- 请求类型:跨站请求和同站请求的处理规则不同。
发送,而 HttpOnly 属性则防止 cookie 被 JavaScript 访问。
5. 过期时间:如果 Cookie 已经过期,不会发送。
6. 数量和大小限制:如果 Cookie 数量或大小超出浏览器限制,可能会被丢弃。
7. 请求类型:跨站请求和同站请求的处理规则不同。
总结:浏览器在发送请求时确实会自动携带与目标域相关的 cookie,但并不是所有 cookie 都会被携带。这涉及到 cookie 的作用域和安全属性,比如 Domain、Path、SameSite 等。
相关文章:
浏览器自动携带cookie注意事项
文章目录 浏览器自动携带与目标域相关的 cookie 是由 HTTP 协议规范和浏览器设计共同决定的一、Cookie 携带的基本规则同源策略下的自动携带跨域请求的受限携带一、服务器端配置二、客户端配置三、 常见错误及注意事项 二、Cookie 属性的筛选逻辑 三、浏览器携带cookie的准则1.…...
同旺科技USB to I2C 适配器 ---- 指令循环发送功能
所需设备: 内附链接 1、同旺科技USB to I2C 适配器 1、周期性的指令一次输入,即可以使用 “单次发送” 功能,也可以使用 “循环发送” 功能,大大减轻发送指令的编辑效率; 2、 “单次发送” 功能,“发送数据…...
算法及数据结构系列 - 滑动窗口
系列文章目录 算法及数据结构系列 - 二分查找 算法及数据结构系列 - BFS算法 算法及数据结构系列 - 动态规划 算法及数据结构系列 - 双指针 算法及数据结构系列 - 回溯算法 算法及数据结构系列 - 树 文章目录 滑动窗口框架思路经典题型76. 最小覆盖子串567. 字符串的排列438. …...
AI密码学
嗯,用户给了一个需要破译的密码文档:“Uif qjh jt po uif usff.”,提示是用字母往前推移1的凯撒密码。首先,我得确认自己是否正确理解提示。凯撒密码通常是将字母按照一定位移来替换,这里的提示是往前推1位,…...
关于VSCode使用过程中的一些问题记录(持续更新)
1. VSCode更新拒绝访问 VSCode安装更新的时候出现: D:\Program Files\Microsoft VS Code\tools\inno_updater.exe 尝试在目标目录创建文件时发生一个错误:拒绝访问。 解决方法: 1. 禁止VSCode的自动检查更新,操作方法ÿ…...
重新复活的(手机端)一站式应用管理与下载平台
应用乐园(安卓) 应用乐园作者去年3月表示,由于精力问题,要停止维护奇妙搜索、应用乐园、奇妙影视这些软件了。 然而最近,令人意外的是,应用乐园竟然“复活”了!更准确地说,它进行了…...
Vue3前端开发:组件化设计与状态管理
Vue3前端开发:组件化设计与状态管理 一、Vue3组件化设计 组件基本概念与特点 是一款流行的JavaScript框架,它支持组件化设计,这意味着我们可以将页面分解成多个独立的组件,每个组件负责一部分功能,通过组件的嵌套和复用…...
失物招领|校园失物招领系统|基于Springboot的校园失物招领系统设计与实现(源码+数据库+文档)
校园失物招领系统目录 目录 基于Springboot的校园失物招领系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、 管理员功能实现 (1) 失物招领管理 (2) 寻物启事管理 (3) 公告管理 (4) 公告类型管理 2、用户功能实现 (1) 失物招领 (2) 寻物启事 (3) 公告 …...
嵌入式硬件工程师从小白到入门-原理图(三)
原理图绘制从小白到入门:知识点速通与注意事项 一、原理图绘制基础概念 什么是原理图? 原理图(Schematic)是电子电路的图形化表示,展示元器件之间的电气连接关系,是硬件设计的蓝图。 核心元素 元器件符号&…...
Pear Admin Flask 开发问题
下载代码请复制以下命令到终端执行 git clone https://gitee.com/pear-admin/pear-admin-flask 于是我下载git 完成安装后: 安装 Git 后出现的页面是 “Git for Windows 的版本发布说明(Release Notes)”,通常会在安装完成后自动弹…...
Collectors.toMap / list 转 map
前言 略 Collectors.toMap List<User> userList ...; Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getUserId, Function.identity()));假如id存在重复值,则会报错Duplicate key xxx, 解决方案 两个重复id中&#…...
1996-2023年各省公路里程数据(无缺失)
1996-2023年各省公路里程数据(无缺失) 1、时间:1996-2023年 2、来源:国家统计局、统计年鉴 3、指标:公路里程(万公里) 4、范围:31省 5、指标解释:公路里程指报告期末…...
量化研究---可转债量化交易系统上线快速服务器
现在可转债交易系统使用的人多,服务器比较小,今天对服务器进行了升级,提供快速的数据支持,同时我也给了服务器的源代码,支持自定义服务器数据支持,不通过我服务器,可以挂在服务器上面24小时快速…...
用ArcGIS做一张符合环评要求的植被类型图
植被类型图是环境影响评价(环评)中的重要图件,需满足数据准确性、制图规范性和信息完整性等要求。本教程将基于ArcMap平台,从数据准备到成果输出,详细讲解如何制作符合环评技术规范的植被类型图。 ArcGIS遥感解译土地…...
Java 双端队列实战 实现滑动窗口 用LinkedList的基类双端队列Deque实现 洛谷[P1886]
集合 关系 介绍 Deque 是一个接口 LinkedList 是这个接口的实现类 题目 输入输出 滑动窗口 基于双端队列实现 Deque<Integer> deque new LinkedList<>(); 滑动窗口代码 洛谷 public static List<Integer> maxSlidingWindow(int[] nums, int k) {List&l…...
【商城实战(54)】解锁商城国际化密码:内容管理全攻略
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
AI代码编辑器:Cursor和Trae
Cursor 定义:Cursor 是一款基于AI的代码编辑器,它继承了VS Code的核心功能,并在此基础上增加了深度AI支持。它支持代码生成、优化、重构以及调试等功能,提供直观的Diff视图和自动补全功能,是一款功能强大的编程工具。…...
[学习笔记] VM虚拟机安装Ubuntu系统
前言 我现在装的Ubuntu总是死机,经常黑屏,所以我决定换个版本,顺便写一下笔记,给大家分享如何安装虚拟机 下载 这里我选择的是Ubuntu 22.04.5 LTS,下载链接:Ubuntu 22.04.5 LTS 如果访问不了网站的话&…...
统计学重要概念:自由度
在统计学中,自由度(degrees of freedom,简称df)是一个重要的概念,它表示在计算某个统计量时可以自由变化的值的数量。对于一个样本量为n的样本,自由度通常为n-1,这是因为我们需要用样本数据来估…...
3.22模拟面试
前端模拟面试(1 年经验) 面试时长:40-60 分钟 面试难度:初中级 技术栈:Vue 3、TypeScript、微前端(qiankun)、Webpack/Rspack、Ant Design、组件库迁移 一、基础知识 HTML & CSS 介绍一下…...
汇编语言习题笔记——第1章 汇编语言基础
第1章 汇编语言基础 1. IA-32处理器有哪三类基本段,各是什么用途? 段类型寄存器主要用途特点代码段 (CS)CS存储可执行指令执行权限,通常只读,与 IP/EIP/RIP 配合,确定指令地址数据段 (DS, ES, FS, GS)DS, ES, FS, GS存储程序数据 (变量, 数据结构等)读写权限,多个寄存器…...
为扣子智能体接入 DeepSeek
扣子现已推出满血版 DeepSeek 全家桶,支持免费体验 R1、V3 模型。除此之外,扣子支持 DeepSeek 思维链(Chain-of-Thought,CoT)和 Function Calling 能力,为你的智能体添加私有知识和多种技能,拓展…...
3.22日西南竞篮,NBA勇士VS老鹰,赛前数据前瞻
3.22日NBA勇士VS老鹰赛前数据前瞻 关键要点 明天(3月22日)的NBA比赛是金州勇士对阵亚特兰大老鹰,盘口为勇士让2.5分,大小分预设为230.5。 勇士目前战绩41胜29负,西部第六;老鹰战绩33胜36负,东部…...
C语言:循环控制结构习题
1水仙花数是指各个位数的立方和等于本身的三位数。例如:153是水仙花数,因为1531的立方5的立方3的立方。 编程计算并输出所有的水仙花数。 第一种做法 思路: 1三位数:百位,十位和个位,除了百位是1-9&#…...
Dear ImGui for Unity 常见问题解决方案
Dear ImGui for Unity 常见问题解决方案 dear-imgui-unity Unity package for Dear ImGui 项目地址: https://gitcode.com/gh_mirrors/de/dear-imgui-unity 1. 项目基础介绍 Dear ImGui for Unity 是一个开源项目,旨在将Dear ImGui库整合到Unity游戏引擎中。…...
【Unity3D】摄像机适配场景以及Canvas适配
目录 宽度不变策略 高度不变策略 宽度不变策略 开发分辨率 750*1334 (宽高比:0.56) 真机分辨率 1170*2532 (宽高比:0.46) 真机宽高比<开发宽高比,采用宽度不变策略 理由:小于代表真机高度比开发高度更大,因此不需要担心高度上…...
盛铂科技国产SLMF315超低相位噪声频率综合器介绍
SLMF315频率综合器简介: 盛铂科技SLMF315超低相位噪声频率综合器的频率范围覆盖200MHz至15GHz。频率的最小步进仅为0.1Hz,在不考虑频率精度的情况下频率步进可达0.04Hz。SLMF315内部采用多环路设计从而获得极优秀的相位噪声特性,频率输出为1…...
一个简单的人脸识别demo
使用face_recognition和OpenCV库完成人脸检测和识别任务: # 导入必要的库 import cv2 # OpenCV库,用于图像处理 import face_recognition # 人脸识别库 import numpy as np # 数值计算库# 步骤1:加载已知人脸的图片并编码 # 加载乔布斯的…...
SpringDoc和Swagger使用
目录 一、SpringDoc 1.添加依赖 2.配置代码 配置解释 (1)springdoc.api-docs.path (2)springdoc.swagger-ui.path (3)springdoc.swagger-ui.operationsSorter (4)springdoc.…...
RestTemplate和RPC区别
RestTemplate是Spring框架中用于进行RESTful风格的HTTP请求的模板类,通常用于与外部服务进行通信。它基于HTTP协议,使用GET、POST、PUT、DELETE等HTTP方法来进行通信,传输的数据通常使用JSON或XML格式。它是一种基于资源的通信方式࿰…...
