#1384·fetch

`Set-Cookie` 头不应合并/不支持 `Headers.getSetCookie()` 方法

作者: ezzatron创建于 2023年9月21日更新于 2023年9月24日

Fetch Standard 定义了 Set-Cookie 头的 特殊行为

排序和合并 头列表,请执行以下步骤。它们返回一个 头列表

  1. 让 headers 为 头列表
  2. 让 names 为将列表中的所有 头名 转换为 排序小写集 的结果。
  3. 对 names 的每个 名字 执行:
    1. 如果名字是 set-cookie,则:
      1. 让 values 为列表中所有 的列表,其中 头名 是与名字相匹配的 字节大小写不敏感 字符串,按顺序排列。
      2. 对 values 的每个 执行:
        1. 添加 (name, value) 到 headers 中。
    2. 否则:
      1. 让 value 为从列表中获取 name 的结果。
      2. 断言:value 不为空。
      3. 添加 (name, value) 到 headers 中。
  4. 返回 headers 。

这是因为 set-cookie 头的值可能包含逗号,例如具有过期时间的 Cookie(例如 cookie-name=cookie-value; Path=/; Expires=Thu, 21 Sep 2023 06:12:39 GMT; Secure)。使用逗号进行组合可能会改变它们的语义。

内容来源: JakeChampion/fetch