OpenReplay Logo
12k
12k

Cookie 解析器

在浏览器中解析 Cookie 和 Set-Cookie 头——解码值、读取属性并捕捉配置错误。没有任何数据离开你的机器。

本地处理
Cookie
在上方粘贴 Cookie 标头,即可列出每个 cookie 及其解码后的值和字节大小。

关于此工具

cookie 解析器将一个 HTTP cookie 字符串分解为各个部分。请求中的“Cookie”头(与你从 document.cookie 得到的字符串相同)是一个扁平的“name=value; name=value”列表,而每个“Set-Cookie”响应头携带一个 cookie 及其属性:Domain、Path、Expires、Max-Age、Secure、HttpOnly、SameSite、Partitioned 和 Priority。本工具两者都能读取:它按正确的分隔符拆分,对值进行 URL 解码和去引号处理(这些值本身可能包含“=”),将每个 cookie 的字节大小与约 4096 字节的浏览器上限作对比,并将 Expires 和 Max-Age 解析为可读的日期和倒计时。

用它来排查某个 cookie 为何没有被设置或发送——粘贴一行 Set-Cookie,本工具就会标记出那些经典错误:SameSite=None 却没有 Secure,缺失的 Expires/Max-Age 悄悄将其变成了会话 cookie,过大的负载,或带前导点的遗留 Domain。或者粘贴一个 Cookie 头来清点一个请求究竟携带了什么,将其以 JSON 形式复制为测试夹具,或找出拖慢请求的臃肿 cookie。“Load my cookies”会拉取本页面的 document.cookie,让你可以当场检视自己的非 HttpOnly cookie。

一切都在你的浏览器中本地解析——任何头部、值或 cookie 都绝不会被发送到服务器,而且 HttpOnly cookie 对 document.cookie 是有意不可见的,因此它们不会出现在 \"Load my cookies\" 下。

常见问题

Cookie 头和 Set-Cookie 头有什么区别?

Cookie 头由浏览器发送给服务器,是一行以分号分隔的“name=value”对,不含属性。Set-Cookie 则方向相反——响应中每个 cookie 一个头——并携带 Domain、Path、Expires、Max-Age、Secure 和 SameSite 等属性,告诉浏览器如何存储和发送它。

当 Max-Age 和 Expires 都被设置时,哪个生效?

Max-Age 优先。如果一个 Set-Cookie 头同时包含两者,支持 Max-Age 的浏览器会使用它并忽略 Expires;Max-Age 是以秒为单位的生存期,而 Expires 是一个绝对日期。Max-Age 为 0 或负值会立即删除该 cookie。

为什么我的 SameSite=None cookie 被拒绝了?

只要使用了 SameSite=None,浏览器就要求带上 Secure 属性,以便该 cookie 仅通过 HTTPS 发送。带 SameSite=None 但没有 Secure 标志的 Set-Cookie 会被丢弃——添加 Secure(并通过 HTTPS 提供服务)即可修复。