使用說明

Header parser:把 HTTP 標頭整理成表格與 JSON

這個 header parser 會把原始的 HTTP 標頭,或電子郵件的標頭區塊,整理成一張排序好、可篩選的表格,每個標頭一列。像 Set-Cookie 這種重複出現的標頭會合併成一列,每個值各自列出,整組結果也能複製成 JSON。它只會整理你貼上的文字,不會查詢、檢查或解碼任何內容。


Header parser 使用步驟

  1. 複製標頭:可以從瀏覽器開發者工具的 Network 分頁、curl -i 的輸出,或電子郵件原始碼的最上方取得。只貼上標頭那幾行,後面的本文不要貼。
  2. 貼到原始標頭。輸入框最多可接受 5 MB(5,000,000 個字元)。
  3. 在解析模式選擇電子郵件 / RFC 5322(預設)或嚴格 HTTP。兩者的差別會在下方說明。
  4. 按下解析標頭。解析結果畫面會開啟,顯示名稱與值兩欄的表格,依名稱由 A 到 Z 排序,不分大小寫。像 DKIM 簽章這類很長的值,可以在表格內左右捲動。
  5. 在依名稱或值篩選輸入文字就能縮小列數。下方的數量會從「12 個標頭」變成「12 個標頭中的 3 個」,篩選同樣不分大小寫。
  6. 按下複製為 JSON,就會把所有已解析的標頭放進剪貼簿。編輯標頭會回到貼上的文字,內容仍然保留,所以你可以修正某一行後再解析一次。

範例:貼上原始標頭,輸出 JSON

範例區塊包含一行回應狀態列(HTTP/1.1 200 OK)、三個一般標頭、兩行 Set-Cookie(其中一行是小寫),以及折到第二行的 Received 標頭。

在預設的「電子郵件 / RFC 5322」模式下,會得到四列。兩個 Cookie 共用一列,折行的 Received 值會接成一行,而狀態列因為冒號前沒有名稱,會被列為略過。「複製為 JSON」的結果如下:

{"Cache-Control": "no-store", "Content-Type": "text/html; charset=utf-8", "Received": "from mail.example.com by mx.example.net; Tue, 1 Oct 2024 09:00:00 +0000", "set-cookie": ["id=a3fWa; Path=/", "theme=dark"]}

合併後的列保留最先出現的寫法 set-cookie,並因為這個標頭出現了兩次而變成陣列。只出現一次的標頭則是一般字串。

嚴格 HTTP 與電子郵件 / RFC 5322:該選哪個模式

兩種模式的差別,只在於遇到以空格或 Tab 開頭的那一行時怎麼處理。

如果不確定,就維持預設。它是兩者中比較寬鬆的。

解析時會略過、合併與保持原樣的內容

這個工具不做的事

它只整理文字結構,沒有別的功能。它不會追蹤郵件的傳遞路徑,不會驗證 SPF、DKIM 或 DMARC,不會判斷郵件是垃圾信還是正常信件,也不會解碼任何值:像 =?UTF-8?B?…?= 這樣的編碼字詞和 Base64 字串,都會照你貼上的樣子顯示。如果你想從電子郵件讀出寄件者、驗證結果和逐台伺服器的路徑,請改用「電子郵件標頭分析器」。

解析在你的瀏覽器內執行,貼上的標頭不會上傳或儲存。這一點在這裡很重要,因為標頭區塊常含有工作階段 Cookie、API 金鑰和電子郵件地址。


常見問題

在 Chrome 怎麼複製請求標頭?

開啟開發者工具,切到 Network 分頁,然後重新載入頁面。在該請求上按右鍵,從選單選擇複製請求標頭(或回應標頭)的項目。把結果貼到「原始標頭」,再按「解析標頭」。Firefox 的 Network 分頁在請求上也有相同的複製選單。如果使用 curl -i,只貼標頭那幾行,不要貼後面的回應本文。

HTTP 標頭有分大小寫嗎?

名稱不分大小寫:Content-Type、content-type 和 CONTENT-TYPE 是同一個標頭,所以工具會用最先出現的寫法把它們合併成一列。值會照原樣保留,只會去掉前後的空格,因為有些值(例如 Cookie 的值和權杖)是分大小寫的。

同一個回應可以有多個 Set-Cookie 嗎?

可以。回應會為每個 Cookie 各送出一行 Set-Cookie,而 Set-Cookie 正是無法安全地用逗號合併的標頭的典型例子。工具會把每個 Set-Cookie 值各列一行,放在同一列之內,「複製為 JSON」則會把那一列變成陣列。電子郵件中的 Received 標頭也是同樣的重複方式,每經過一台伺服器就一行。

像 :authority 這種 HTTP/2 虛擬標頭是什麼?

虛擬標頭是 HTTP/2 用名稱以冒號開頭的標頭來表示的請求欄位::method、:scheme、:authority 和 :path,回應中另外還有 :status。:authority 帶有主機名稱,作用就像 HTTP/1.1 的 Host 標頭。工具把開頭的冒號視為名稱的一部分,所以它們會以一般列顯示,並排在其他標頭前面。

怎麼把 HTTP 標頭做成 JSON?

貼上標頭,按「解析標頭」,再按「複製為 JSON」。你會得到一個以標頭名稱為鍵的 JSON 物件。只出現一次的標頭是字串,像 Set-Cookie 這種重複出現的標頭則是依出現順序排列的字串陣列。即使篩選正在隱藏部分列,JSON 仍然包含所有已解析的標頭。

電子郵件標頭該用哪個解析模式?

使用預設的「電子郵件 / RFC 5322」。它會把以空格或 Tab 開頭的行接到上一行,Received 或 DKIM-Signature 這類很長的值就會合成一行。如果是 HTTP 回應,想看到縮排的行被標示出來,請選「嚴格 HTTP」。

把 Cookie 和權杖貼到線上的工具安全嗎?

解析在你的瀏覽器內進行,你貼上的內容不會被上傳或儲存,所以這個頁面不會把標頭區塊裡的 Cookie 和權杖送到任何地方。不過,仍然要把還在使用的工作階段 Cookie 或 Authorization 標頭當成密碼看待:在把標頭或 JSON 分享給別人之前,先替換掉這些值。