Cookie 解析与生成
粘 Cookie 头或 Set-Cookie 头即可拆分每条 Cookie 与它的 Path、HttpOnly、SameSite 等属性,可在名=值、Set-Cookie 响应头、document.cookie 赋值、JSON 四种输出之间切换,纯浏览器本地处理。
两种输入怎么区分
带 <code>Set-Cookie:</code> 前缀的行按「一条 Cookie + 属性」解析,<code>Path</code>、<code>HttpOnly</code> 这些会拆出来单独归类;带 <code>Cookie:</code> 前缀或光秃秃一行 <code>名=值; 名=值</code> 的,整行都当请求 Cookie 解析。
所以只粘了 <code>sid=1; Path=/</code> 而没写前缀时,<code>Path=/</code> 会被当成一条名叫 Path 的 Cookie —— 补上 <code>Set-Cookie:</code> 前缀就不会。
四种输出各给谁用
<code>名=值</code> 直接贴进请求头或浏览器控制台;<code>Set-Cookie 头</code> 是响应头写法,属性照原样带回;<code>JS 赋值</code> 生成 document.cookie 语句,属性名转成小写(JS 里不区分大小写)。
<code>JSON</code> 给要写进配置或自动化脚本的场合,属性单独放在 attrs 数组里、保持原有顺序。
值里的引号和 URL 编码
Cookie 值按规范可以带双引号包起来,解析时会去掉外层引号;勾「值做 URL 解码」会把 <code>%20</code>、<code>%E4%B8%AD</code> 这类编码还原,解码失败就保留原文并在提示里计数。
Expires 原样带回,不做时区换算 —— 各家服务器给的本来就是 GMT 字符串,自己改格式反而容易写错。
常见问题
为什么 Path 变成了一个 Cookie?
没写 Set-Cookie: 前缀时,整行按请求 Cookie 拆,Path=/ 就是一段名=值。补上 Set-Cookie: 前缀,它就会被认成属性。
能解析 Cookie 域的自动清理逻辑吗?
不能。SameSite=None 需要的 Secure、Path/Domain 是否匹配当前页这些都要结合具体页面判断,本页只做字符串层面的拆分。
JS 赋值那栏为什么没有 Domain?
有就照原样输出。Domain 只能设在当前域或其父域上,写别的域浏览器会直接忽略,那属于要改服务端响应头的事。