Set-Cookie解析器

Set-Cookie 解析

按行粘贴 Set-Cookie 响应头,查看属性、潜在风险和 SameSite / Secure 组合是否合理。

Cookie 属性卡片

2 条 Set-Cookie
#1sessionabc123
path/
httponly(标记)
secure(标记)
samesiteLax
未发现明显属性组合问题
#2preview1
max-age600 (10m 0s)

setCookieParser.attr.maxAgeHint

samesiteNone
secure(标记)
setCookieParser.warn.missingHttpOnlysetCookieParser.warn.missingPath

JSON 预览

[
  {
    "index": 0,
    "raw": "session=abc123; Path=/; HttpOnly; Secure; SameSite=Lax",
    "name": "session",
    "value": "abc123",
    "decodedValue": "abc123",
    "attributes": [
      {
        "key": "path",
        "value": "/"
      },
      {
        "key": "httponly",
        "value": null
      },
      {
        "key": "secure",
        "value": null
      },
      {
        "key": "samesite",
        "value": "Lax"
      }
    ],
    "attributeMap": {
      "path": "/",
      "httponly": true,
      "secure": true,
      "samesite": "Lax"
    },
    "warnings": []
  },
  {
    "index": 1,
    "raw": "preview=1; Max-Age=600; SameSite=None; Secure",
    "name": "preview",
    "value": "1",
    "decodedValue": "1",
    "attributes": [
      {
        "key": "max-age",
        "value": "600"
      },
      {
        "key": "samesite",
        "value": "None"
      },
      {
        "key": "secure",
        "value": null
      }
    ],
    "attributeMap": {
      "max-age": "600",
      "samesite": "None",
      "secure": true
    },
    "warnings": [
      "warn.missingHttpOnly",
      "warn.missingPath"
    ]
  }
]

浏览器为什么不收 Cookie,往往不是值错了,而是 Set-Cookie 属性错了。

相关推荐

什么是 Set-Cookie解析器?

Set-Cookie解析器是专门面向 HTTP 响应头里 `Set-Cookie` 内容的调试工具。它的目标不是简单把一行文本按分号拆开,而是帮助开发者判断:服务端这条 Cookie 配置对不对、浏览器为什么没收下、哪些属性组合存在安全或兼容性风险、以及当前 Set-Cookie 是否适合跨站、SSO、iframe、第三方 Cookie 或会话场景。

和请求头里的 Cookie 不同,Set-Cookie 是服务器“发给浏览器的配置指令”。它不仅包含 `name=value`,还会携带 SameSite、Secure、HttpOnly、Path、Domain、Expires、Max-Age、Partitioned 等属性,这些字段直接决定浏览器是否写入、何时失效、在哪些路径和域名下生效,以及能否在跨站请求中发送。因此,很多“登录态丢失”“浏览器不带 Cookie”“跨域场景无效”的根因,其实不在值本身,而在 Set-Cookie 的属性配置上。

当前页面的价值就在于把这些属性从原始响应头里结构化拆出来,再结合浏览器真实规则做静态检查。例如 SameSite=None 是否缺少 Secure、Partitioned 是否搭配 Secure、__Host- 前缀是否错误设置了 Domain、Max-Age 是否无效或等于 0、Expires 是否缺少 Max-Age 等。这些问题浏览器通常不会像语法错误那样直接弹提示,而是静默拒绝或表现为“就是不生效”,因此工具化检查非常重要。

如果你只想知道请求里当前带了哪些 Cookie,不该停留在这个页面,而应该去看更适合拆解请求头的「HTTP Cookie解析器」。当前页更适合“浏览器为什么没写入”“服务端这条 Cookie 配置有没有隐患”“跨站和安全属性组合是否合理”这类响应头排查场景。

适用场景

  • 浏览器拒绝写入 Cookie 时,快速定位是 SameSite、Secure、HttpOnly 还是 Path / Domain 配置问题
  • 第三方登录、SSO、iframe 嵌入或跨站请求场景下,检查 SameSite=None 是否正确搭配 Secure
  • 安全审计时批量检查接口返回的 Cookie 是否缺 HttpOnly、缺 SameSite 或存在高风险属性组合
  • 验证 __Host- / __Secure- 前缀 Cookie 是否满足浏览器强约束,避免被静默丢弃
  • 调试 Partitioned Cookie / CHIPS 三方分区方案时,确认 Partitioned 与 Secure 是否同时声明
  • 对比开发、测试、生产环境的 Set-Cookie 响应头差异,排查环境切换后登录态异常

使用方法

  1. 从浏览器 DevTools、抓包工具或服务端日志里复制 Set-Cookie 响应头内容(支持多行)
  2. 粘贴到输入区,工具会自动剥离 `Set-Cookie:` 前缀并逐行解析
  3. 查看每条 Cookie 的名称、值、URL 解码值、属性卡片和告警标签
  4. 复制原始头或查看 JSON 预览,把结果继续发给后端、贴到 Issue 或写入测试脚本

功能特点

  • 多条 Set-Cookie 独立解析:每行单独成卡片,逐条查看名称、原始值、URL 解码值和属性
  • 14 类常见问题自动检查:覆盖 SameSite、Secure、HttpOnly、Path、Domain、Max-Age、Expires、__Host- / __Secure- 前缀与 Partitioned 等高频风险
  • 完整属性拆解:按 SameSite、Secure、HttpOnly、Path、Domain、Expires、Max-Age、Partitioned 等字段结构化展示
  • Max-Age 人类可读换算:秒数自动转为分钟、小时、天,减少手动换算成本
  • 多行批量输入:可直接粘贴 DevTools 或抓包工具里复制出的整段 Set-Cookie 响应头
  • 原始头复制与 JSON 预览:既方便回传给后端,也方便写文档、Issue、脚本和测试用例
  • 本地零上传:敏感 Session、Token 和登录态 Cookie 在浏览器内解析,不离开本机

什么时候用 Set-Cookie解析器,什么时候用另外两个页面?

看清“服务端设置了什么”和“请求里实际带了什么”是两件事,别混着查。

工具适合输入最适合场景核心优势
Set-Cookie解析器(当前页)Set-Cookie 响应头排查浏览器为什么不收 Cookie、为什么跨站不生效、为什么安全属性配置有风险属性拆解完整,并自动做 14 类高频配置检查
HTTP Cookie解析器Cookie 请求头、document.cookie确认请求里实际带了哪些 Cookie、值是否被 URL 编码、是否有重复名称更聚焦请求头名值对拆解和标准化输出打开 HTTP Cookie解析器
Cookie解析器Cookie 字符串与 Set-Cookie 混合排查场景还不确定手里数据来源,或想在一个页面中快速切换 Cookie / Set-Cookie 两种模式更像 Cookie 调试总入口,并支持 Netscape Cookie File 导出打开 Cookie解析器

最佳实践

先判断问题出在“设置失败”还是“请求没带上”

如果浏览器根本没写入 Cookie,优先看当前页;如果浏览器已经写入,但后续请求里没带上,就要结合 HTTP Cookie解析器一起看。Set-Cookie 和 Cookie 请求头是两个不同阶段。

跨站场景先看 SameSite=None 和 Secure 的组合

SSO、第三方登录、iframe 嵌入、跨域请求最常见的坑,就是 SameSite=None 却没配 Secure。先把这组问题排干净,再去看服务端逻辑和浏览器策略。

__Host- / __Secure- 前缀不要只看名字,要看约束是否完整

很多团队以为给 Cookie 名字加上 `__Host-` 或 `__Secure-` 就已经更安全了,但如果 Secure、Path=/、Domain 等配套条件没满足,浏览器仍然会拒绝写入。

写文档和复现 Issue 时优先保留原始头和 JSON 两份材料

原始头适合给后端和运维核对真实返回值;JSON 适合贴到 Issue、测试用例和脚本里继续处理。两份一起保留,比只截一张 DevTools 图更利于复现和协作。

常见问题

Set-Cookie 解析器和 Cookie 请求头解析器有什么区别?

Set-Cookie 解析器面向服务端响应头,重点看浏览器“会不会收下这条 Cookie、属性有没有问题”;Cookie 请求头解析器面向浏览器发出去的请求,重点看“这次请求到底带了哪些 Cookie”。如果你在排查 SameSite、HttpOnly、Secure、Path、Domain、Expires、Max-Age 等属性配置问题,应该优先使用当前页。

HTTP Cookie解析器

为什么浏览器明明收到了响应,却没有写入 Cookie?

这正是当前工具最适合解决的问题。常见原因包括 SameSite=None 没配 Secure、Secure Cookie 试图在 HTTP 页面设置、__Host- 前缀违规、Partitioned 缺 Secure、Path 或 Domain 配置不合理、Max-Age 无效或直接为 0,以及浏览器第三方 Cookie 策略限制。

工具会检查哪些常见 Set-Cookie 风险?

当前页会自动检测 14 类高频问题,包括 SameSite=None 缺 Secure、SameSite 值非法、Partitioned 缺 Secure、缺 HttpOnly、缺 Path、缺 SameSite、__Host- 前缀缺 Secure / Path 不是 / / 错配 Domain、__Secure- 前缀缺 Secure、Max-Age 无效、Max-Age=0、Domain 以点号开头以及 Expires 未配 Max-Age 等。

为什么 SameSite=None 一定要配 Secure?

现代浏览器要求跨站可发送的 Cookie 如果声明 `SameSite=None`,就必须同时带 `Secure`,否则浏览器通常会直接拒绝写入。这类问题在第三方登录、SSO、iframe 嵌入和跨域请求调试中非常常见。

为什么 __Host- 和 __Secure- 前缀 Cookie 会被浏览器拒绝?

`__Host-` 和 `__Secure-` 是带强约束的安全前缀。`__Host-` 要求必须 Secure、Path=/ 且不能设置 Domain;`__Secure-` 至少要求 Secure。如果违反这些规则,浏览器会直接忽略该 Cookie。

Max-Age 和 Expires 应该怎么看?

Max-Age 是相对秒数,通常优先级高于 Expires;Expires 是绝对时间点,受客户端时钟影响。很多服务端只写 Expires 不写 Max-Age,虽然能工作,但在调试时更容易因为时区或系统时间偏差带来误判。

这个工具适合排查跨站 Cookie 和第三方 Cookie 问题吗?

适合。无论是第三方登录、SSO、嵌入 iframe、跨域接口还是 CHIPS(Partitioned Cookie)场景,这个工具都能帮助你快速看清 SameSite、Secure 和 Partitioned 的组合是否合理。

解析结果支持复制或导出吗?

支持。你可以一键复制原始 Set-Cookie 头,也可以查看结构化 JSON 预览,把每条 Cookie 的名称、值、属性和告警结果继续贴到 Issue、文档、测试脚本或联调记录里。

会不会把我复制的 Session、Token 上传到服务器?

不会。Set-Cookie 内容解析、URL 解码、属性拆解和告警检查都在浏览器本地完成,不会把敏感响应头上传到服务器。

术语表

Set-Cookie
HTTP 响应头,服务器通过它告诉浏览器存储一条 Cookie。一个响应可以出现多条 Set-Cookie,每条通常对应一个 Cookie。
SameSite
控制跨站请求是否携带 Cookie 的属性。常见取值为 Strict、Lax、None;其中 None 往往要求同时设置 Secure。
HttpOnly
设置后前端 JavaScript 不能通过 document.cookie 读取该 Cookie,主要用于降低 XSS 窃取会话的风险。
Secure
设置后浏览器只会在 HTTPS(或 localhost 特例)连接中发送该 Cookie,避免敏感 Cookie 在明文 HTTP 中暴露。
Max-Age
Cookie 的相对生存时间,单位是秒。通常优先级高于 Expires,推荐在服务端明确设置。
Expires
Cookie 的绝对过期时间点,依赖客户端本地时间。单独使用时调试成本通常比 Max-Age 更高。
Path
限制 Cookie 生效的 URL 路径前缀。Path 不匹配时,即使 Cookie 已写入,后续请求也不会带上。
Domain
限制 Cookie 生效的域名范围。不设置时通常只限当前主机;设置后可能作用到子域。
Partitioned(CHIPS)
第三方 Cookie 分区存储方案,常用于浏览器逐步收紧第三方 Cookie 后的替代路径。当前实现通常要求搭配 Secure。
__Host- / __Secure- 前缀
浏览器支持的高安全 Cookie 命名前缀,带有强约束规则。违反规则时浏览器会拒绝接收对应 Cookie。

SameSite 三种策略对比速查表

跨站 Cookie 排查时,先看 SameSite 的行为边界,再看 Secure 是否缺失。

SameSite 值跨站顶级导航(GET)跨站子资源(img/iframe/script)跨站 POST 表单跨站 XHR/fetch是否必须 Secure
Strict不发送不发送不发送不发送
Lax(默认)发送不发送不发送不发送
None发送发送发送发送必须设置 Secure

Set-Cookie 调试高频问题对照表

浏览器静默拒收 Cookie 时,先按下面这些方向排查,通常比盯着响应体更快。

现象高概率原因优先检查
浏览器完全不写入 CookieSameSite=None 缺 Secure、前缀违规或属性组合不合法先看当前页的告警标签和属性卡片
跨站 / iframe 场景不生效SameSite 过严、Secure 缺失或第三方策略限制重点看 SameSite、Secure、Partitioned
Cookie 一写入就失效Max-Age=0、Max-Age 非法、Expires 时间有问题先看 Max-Age,再看 Expires
__Host- / __Secure- Cookie 无效Secure、Path=/ 或 Domain 约束没满足核对前缀告警是否命中
开发环境正常,生产环境不正常HTTPS、Domain、Path、SameSite 或代理层响应差异复制原始头,对比不同环境的 Set-Cookie 返回

Privacy & Security

Set-Cookie 响应头解析、URL 解码、属性拆解与 14 类告警检查全部在浏览器本地完成。粘贴的 Session、Token、登录态 Cookie 不会上传到任何服务器。