HTTP・リクエストの調査

HTTPヘッダー解析同じ名前の行も残す

ヘッダーブロックを貼り付け、値とパラメーターを確認します。リクエスト用とレスポンス用のサンプルを用意しています。

HTTPヘッダー解析

元のHTTPヘッダー

入力はこのブラウザー内で処理されます。リクエスト送信や履歴保存は行いません。

解析結果

リクエスト行・ステータス行

GET /reports HTTP/1.1

Host

2行目
example.com

Accept

3行目
application/json, text/html;q=0.8, */*;q=0.1
パラメーター詳細
  • application/json重み(q): 1
  • text/html重み(q): 0.8
  • */*重み(q): 0.1

Accept-Language

4行目
en, ja;q=0.8, *;q=0
パラメーター詳細
  • en重み(q): 1
  • ja重み(q): 0.8
  • *重み(q): 0

Authorization

5行目マスク済み
[REDACTED]

X-Trace

6行目重複
first

x-trace

7行目重複
second

オプション

結果と出力のAuthorization、Proxy-Authorization、Cookie、Set-Cookieをマスクします。入力欄や独自のキー、URL内の秘密情報は隠しません。

1ブロック、UTF-8で128 KiB、1000フィールドまで。最初の空行でヘッダーが終了します。

6フィールド・重複2行・注記0件

HTTPヘッダー解析は、開発者ツールからコピーした情報を調査用の資料に整えるための作業です。名前が同じだからといって行を削除すると、プロキシが追加した値や複数のCookieという手掛かりを失ってしまいます。

このHTTPヘッダーパーサーは、入力順の配列と名前ごとの配列を同時に出力します。元の行番号から追いかけたいときも、スクリプトから特定のフィールドを取り出したいときも、元データとの対応を確認できます。

HTTPヘッダー解析で見落としを減らす

Cookieを一つに潰さない

HTTPヘッダー解析では、Set-Cookieが二度現れたら二つの項目として残します。Expiresの日付に含まれるカンマは値の一部です。同名フィールドを単純な文字列連結に変えず、各行を見比べられます。

同じ名前を持つ二つのフィールドが、それぞれ別の色付きの値として順序を保って残る図。

ファイル名の区切りを見分ける

Content-Dispositionの引用符内にあるセミコロンは、パラメーターの境界ではありません。元の値と展開した結果を並べて確認し、filename*の文字コードや想定外の保存名を調べられます。

複雑なフィールドからファイル名と複数のパラメーターが別々のカードへ展開される図。

結果を読む前に確認すること

01

二種類のサンプルを使い分ける

リクエスト例にはAccept、言語の重み、架空の認証値があります。レスポンス例には拡張ファイル名と二つのCookieがあります。置換は文字数付きプレビューを経て適用し、直前の入力と結果へ戻せます。

02

自動更新のタイミングを知る

入力が止まって350ミリ秒後に再解析します。自動を切ると解析ボタンが現れ、Ctrl/Cmd+Enterでも実行できます。入力や表示形式を変えた直後は古い結果をコピーできません。

03

マスクの対象を確認する

初期状態では四つの認証・Cookieフィールドを隠します。解除するとJSONにも元の値が入ります。フィールド表示とJSON表示は同一の結果で、追加表示の件数に関係なく保存対象は全項目です。

行の構造と値の内訳

入力順と名前別の二つの配列

entriesには元の行番号と表記を残し、groupedには名前別の値配列を作ります。大文字小文字は同一視し、グループのキーには最初の表示名を使います。一度しか出ないフィールドも配列なので、読み取る側で型を分岐する必要がありません。

拡張ファイル名の確認

disposition種別と全パラメーターを表示し、有効なfilename*をfilenameより優先します。UTF-8とISO-8859-1を扱い、非対応の符号化や重複パラメーターには注記を付けます。結果の保存名にこの値を使うことはありません。

Acceptの重みをそのまま読む

メディア範囲とAccept-Languageの言語範囲は入力順のままです。qの省略は1、q=0も残します。不正な重みは詳細でnullになり、注記から元のフィールドへ戻って確認できます。候補の並べ替えは行いません。

行と列から原因をたどる

コロン不足、無効な名前、制御文字、旧式の折り返しはエラー位置を示して解析を止めます。専用解析対象の値内部に問題があれば、元の値を保ちつつ注記します。ヘッダー全体の構文エラーを部分成功として出力しません。

扱う形式と判断の範囲

テキストのヘッダーを一つずつ
開始行またはフィールドの後の最初の空行で解析を終了します。本文やリダイレクト後の応答は別に扱ってください。cURLコマンド全体、ログの接頭辞、HAR、バイナリフレームは非対応です。:method: GETのようなテキスト擬似ヘッダーは受け付けます。
通信やブラウザー動作は再現しない
認証の成否、CORSやCSPの安全性、実際に選択される表現は判定しません。ヘッダー名の表示を変えても通信形式の検証にはなりません。JSONからリクエストを生成したり添付ファイルを取得したりする機能もありません。
入力上限とマスク範囲
貼り付け全体でUTF-8の128 KiB、ヘッダー部分で1000フィールドまでです。超過はエラーにして切り捨てません。独自の認証キーやリクエスト先の秘密情報は自動検出しないため、共有する値を自分で確かめてください。

HTTPヘッダー解析のよくある質問

filenameとfilename*はどちらが優先されますか?

対応クライアントでは通常filename*が優先されます。このツールも有効に復号できる拡張値を選びます。重複や符号化エラーは注記し、全パラメーターと元の値を確認できる状態で残します。

inlineでもダウンロードになるのはなぜですか?

Content-Typeやブラウザーの対応状況なども影響します。このツールはinlineという値を解析するだけで、実際に画面表示されることまでは保証しません。対象のレスポンスをブラウザーで確認してください。

日本語ファイル名はどう指定しますか?

互換性用のASCII名をfilenameに、UTF-8でパーセント符号化した本来の名前をfilename*に入れる方法があります。レスポンス例を使うと、拡張パラメーターから表示名へ戻る処理を確認できます。

ヘッダー名は大文字と小文字を区別しますか?

名前によるグループ化では区別しません。Content-Typeとcontent-typeは同じグループですが、元の表記は各項目に残ります。値の文字の大小を一括変換することはありません。

URLだけを入力してヘッダーを取得できますか?

できません。開発者ツールやHTTPクライアントで取得したレスポンスヘッダーを貼り付けてください。URLの取得やリクエストの再送を行う入口はありません。

解析結果に問題がありましたか?

次の記録を調べる

HTTPヘッダー解析で一つの記録を確認し、重複やパラメーターの注記を読んでから、現在のJSONを調査資料として保存してください。