Set-Cookie 解析器

Set-Cookie Parser

貼上多行 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 不會上傳到任何伺服器。