HTTPヘッダー確認:生のヘッダーを表とJSONで見る
HTTPヘッダー確認は、生のヘッダーを貼り付けるだけで始められます。HTTPヘッダー、またはメールのヘッダー部分を貼り付けると、ヘッダー1件につき1行の、並べ替え済みで絞り込める表が表示されます。Set-Cookieのように繰り返し現れるヘッダーは1行にまとめられ、値は1つずつ並びます。全体をJSONとしてコピーすることもできます。貼り付けたテキストの構造を整えるだけで、調べたり、検証したり、デコードしたりはしません。
HTTPヘッダー確認の手順:貼り付けから表の表示まで
- ヘッダーをコピーします。ブラウザの開発者ツールの「Network」タブ、
curl -iの出力、またはメールのソースの冒頭から取れます。貼り付けるのはヘッダーの行だけで、その後ろの本文は含めないでください。 - コピーしたものを生のヘッダーに貼り付けます。入力欄は最大5 MB(5,000,000文字)まで受け付けます。
- 解析モードでメール / RFC 5322(初期設定)か厳格なHTTPを選びます。違いは下で説明します。
- ヘッダーを解析を押します。解析結果の画面が開き、名前と値の表が、名前のA〜Z順(大文字小文字は区別しません)で並びます。DKIM署名のような長い値は、表の中で横にスクロールできます。
- 名前または値で絞り込みに文字を入力すると、行が絞り込まれます。下の件数は、たとえば「12件のヘッダー」から「12件中3件のヘッダー」に変わります。絞り込みでも大文字小文字は区別しません。
- JSONとしてコピーを押すと、解析したすべてのヘッダーがクリップボードに入ります。ヘッダーを編集を押すと貼り付けたテキストに戻れます。テキストは残っているので、1行直してもう一度解析できます。
メールヘッダーの読み方:入力と出力の例
この例は、レスポンスのステータス行(HTTP/1.1 200 OK)、通常のヘッダー3件、Set-Cookieの2行(1行は小文字)、2行目に折り返されたReceivedヘッダーで構成されています。
初期設定の「メール / RFC 5322」では4行になります。2つのCookieは1行にまとまり、折り返されたReceivedの値は1行につながり、ステータス行はコロンの前に名前がないためスキップ扱いになります。「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を残し、ヘッダーが2回現れたので配列になります。1回しか現れないヘッダーは、ふつうの文字列です。
厳格なHTTPとメール / RFC 5322:どちらのモードを選ぶか
2つのモードの違いは、スペースまたはタブで始まる行の扱いだけです。
- メール / RFC 5322:その行は、1つのスペースを挟んで上の行につながります。
ReceivedやDKIM-Signatureのように長い値が複数行に折り返されるメールのヘッダーに向いています。 - 厳格なHTTP:その行はつながらず、スキップとして一覧に載ります。字下げされた行が続きではないHTTPのリクエストやレスポンスで、問題の行を見つけたいときに向いています。
迷ったら初期設定のままで大丈夫です。2つのうち、より寛容なモードです。
スキップ・結合・そのまま残すもの
- 最初のコロンで分割します。コロンより前が名前、後ろが値なので、日付やURLのようにコロンを含む値も途切れません。
- スキップされる行:コロンの前に名前がない行はヘッダーではありません。HTTPのステータス行(
HTTP/1.1 200 OK)、リクエスト行(GET /index.html HTTP/1.1)、単独のテキストが該当します。表の上の注記にスキップした行数と、最初の5行が表示されます。 - 疑似ヘッダー:
:authorityや:methodのように、コロンで始まるHTTP/2の名前も受け付け、表の先頭に並びます。 - 名前の重複:大文字小文字を区別せずに比べます。値ごとに別の行が表に残り、現れた順に並びます。
- 空の値:コロンの後ろに何もないヘッダーは「(空)」と表示されます。
- 空行は無視されますが、ヘッダーの終わりにはなりません。その後に名前とコロンのある行があれば、メール本文の行でも1行として表に入るので、コピーするのはヘッダー部分だけにしてください。
このツールがしないこと:メールヘッダーの解析との違い
テキストの構造を整えるだけです。メッセージの経路をたどること、SPF・DKIM・DMARCの検証、迷惑メールかどうかの判断、値のデコードはしません。=?UTF-8?B?…?=のようなエンコード語やBase64の文字列は、貼り付けたまま表示されます。メールから送信元、認証結果、サーバーごとの経路を読み出したいときは、代わりに「メールヘッダー解析」を使ってください。
解析はブラウザ内で行われ、貼り付けたヘッダーがアップロードされたり保存されたりすることはありません。ヘッダーにはセッションCookieやAPIキー、メールアドレスが含まれていることが多いため、この点が重要です。
よくある質問
Chromeでリクエストヘッダーをコピーするには?
DevToolsを開いて「Network」タブに移り、ページを再読み込みします。対象のリクエストを右クリックし、メニューからリクエストヘッダー(またはレスポンスヘッダー)をコピーする項目を選びます。結果を「生のヘッダー」に貼り付けて、「ヘッダーを解析」を押してください。Firefoxでも、ネットワークタブのリクエストに同じコピーのメニューがあります。curl -iを使う場合は、後ろに続くレスポンス本文ではなく、ヘッダーの行だけを貼り付けてください。
HTTPヘッダーは大文字と小文字を区別しますか?
名前は区別しません。Content-Type、content-type、CONTENT-TYPEは同じヘッダーなので、最初に出てきた表記の1行にまとめられます。値は書かれたまま残り、前後のスペースだけが取り除かれます。Cookieの値やトークンのように、大文字小文字を区別する値があるためです。
Set-Cookieのヘッダーが複数あっても大丈夫ですか?
はい、問題ありません。レスポンスはCookieごとに1行のSet-Cookieを送り、Set-Cookieはカンマで安全に連結できないヘッダーの代表例です。このツールは各Set-Cookieの値を、1つの行の中でそれぞれ別の行に並べ、「JSONとしてコピー」でその行を配列にします。メールのReceivedヘッダーもサーバーごとに1行ずつ、同じように繰り返されます。
:authorityのようなHTTP/2の疑似ヘッダーとは何ですか?
HTTP/2が、名前をコロンで始まるヘッダーとして書くリクエストのフィールドです。:method、:scheme、:authority、:pathがあり、レスポンスには:statusもあります。:authorityはHTTP/1.1のHostヘッダーと同じくホストを表します。このツールは先頭のコロンを名前の一部として扱うため、ふつうの行として表示され、ほかのヘッダーより上に並びます。
HTTPヘッダーをJSONにするには?
ヘッダーを貼り付けて「ヘッダーを解析」を押し、続けて「JSONとしてコピー」を押します。ヘッダー名をキーにした1つのJSONオブジェクトが得られます。1回だけ現れたヘッダーは文字列、Set-Cookieのように繰り返されたヘッダーは、現れた順の文字列の配列になります。絞り込みで一部の行を隠していても、JSONには解析したすべてのヘッダーが入ります。
メールヘッダーはどのモードで読むのが向いていますか?
初期設定の「メール / RFC 5322」を使ってください。スペースまたはタブで始まる行を上の行につなぐので、長いReceivedやDKIM-Signatureの値も1行にまとまります。字下げされた行を目印として見つけたいHTTPのレスポンスには、「厳格なHTTP」を選んでください。
オンラインのツールにCookieやトークンを貼り付けても安全ですか?
解析はブラウザ内で行われ、貼り付けた内容がアップロードされたり保存されたりすることはありません。このページがヘッダーのCookieやトークンをどこかに送ることはありません。それでも、有効なセッションCookieやAuthorizationヘッダーはパスワードと同じように扱い、ヘッダーやJSONを誰かに共有する前に値を置き換えてください。
おすすめ
-
アイリスオーヤマ ノートPCスタンド(折りたたみ式)ノートPCを目線の高さに上げて、長いヘッダーを読んでも首が楽になります。
-
Acer 15.6インチ モバイルモニター夜遅くにおかしなレスポンスを追うとき、画面に映り込まずデスクを照らします。
-
エレコム モニターライト USB-C給電DevToolsやターミナルをサブ画面に出して、ヘッダーと並べて確認できます。
無料でツールを続ける支えになります。✨
画像はイメージです。 Amazonのアソシエイトとして、Capsule Toolsは適格販売により収入を得ています。