HTTPメッセージパーサー

HTTP/1.xおよびHTTP/2メッセージ(リクエスト、レスポンス、curlの詳細出力を含む)を解析・検査します。ヘッダー、ステータスコード、ボディを構造化された形式で表示します。JSON、HTML、XMLコンテンツのボディタイプ自動検出をサポートします。

仕様

よくあるユースケース

  • ブラウザのネットワークタブからのHTTPリクエストのデバッグ
  • APIレスポンスの分析
  • トラブルシューティングのためのcurl -v出力の解析
  • Webhookペイロードの検査
  • セキュリティ分析のためのHTTPヘッダーのレビュー

機能

  • HTTP/1.xおよびHTTP/2のリクエストとレスポンスの解析
  • curl -v詳細出力形式の解析
  • 色分けされたカテゴリ別ステータスコードの表示(2xx、3xx、4xx、5xx)
  • curl出力のリクエストとレスポンスヘッダーの分離
  • ボディコンテンツタイプの自動検出(JSON、HTML、XML)
  • 動的ボディツールレンダリング(ボディコンテンツ用にJSONTool、HTMLToolなどを遅延ロード)
  • ボディセクションの展開/折りたたみ
  • ヘッダーまたはボディをクリップボードにコピー

HTTP GETリクエスト

試してみる →

ヘッダー付きのシンプルなGETリクエスト

GET /api/users HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer token123

HTTPレスポンス

試してみる →

JSONボディ付きの200 OKレスポンス

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 27

{"name":"John","age":30}

curl -v出力

試してみる →

リクエストとレスポンスを含むcurlの詳細出力

* Trying 93.184.216.34:443...
* Connected to example.com
> GET /api HTTP/1.1
> Host: example.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json
<
{"status":"ok"}

ヒント

  • curl -v出力を直接貼り付けてください。リクエストとレスポンスのヘッダーは別々に解析されます。
  • 「JSON/HTML/XMLとしてデコード」をクリックしてボディを適切なデコーダーにチェインできます。
  • ステータスコードは色分けされています: 緑(2xx)、青(3xx)、黄(4xx)、赤(5xx)。

解説 HTTPメッセージパーサー

HTTPメッセージはHypertext Transfer Protocolにおける通信の基本単位です。Webクライアントとサーバー間のすべてのやり取りはリクエストメッセージとレスポンスメッセージで構成されます。その構造を理解することは、APIのデバッグ、ネットワークトラフィックの分析、Webサービスの構築に不可欠です。

HTTPリクエストはメソッド(GET、POST、PUT、DELETE)、ターゲットパス、プロトコルバージョンを含むリクエストラインで始まります。その後にヘッダーフィールド(キーバリューペア)、空行、オプションのボディが続きます。メソッドは意図するアクションを示します: GETはデータを取得、POSTはデータを送信、PUTはリソースを置換、DELETEは削除、PATCHは部分的に更新します。

HTTPレスポンスはプロトコルバージョン、3桁のステータスコード、リーズンフレーズを含むステータスラインで始まります。ステータスコードはクラスごとにグループ化されています: 成功は2xx(200 OK、201 Created)、リダイレクトは3xx(301 Moved、304 Not Modified)、クライアントエラーは4xx(400 Bad Request、401 Unauthorized、404 Not Found)、サーバーエラーは5xx(500 Internal Server Error、502 Bad Gateway)。

curlコマンドラインツールの-v(verbose)フラグは、送信データに>、受信データに<を使用する特徴的な形式でリクエストとレスポンスの両方を出力します。この出力形式は開発者が生のHTTPメッセージに遭遇する最も一般的な方法の1つであり、curl -v解析を重要なデバッグ機能にしています。

HTTP/1.1はテキストベースで、TCPコネクションごとに一度に1つのリクエストを送信します(パイプライニングは存在しますがサポートが不十分です)。HTTP/2はバイナリプロトコルで、単一のコネクション上で複数のリクエストを多重化し、サーバープッシュをサポートし、HPACKでヘッダーを圧縮します。HTTP/2はモダンなWebサイトのレイテンシーを大幅に削減します。セマンティクス(メソッド、ステータスコード、ヘッダー)は両バージョンで同じであり、ワイヤフォーマットのみが異なります。

curl -v出力では、>で始まる行はサーバーに送信されたデータ(リクエスト)、<で始まる行はサーバーから受信したデータ(レスポンス)、*で始まる行はコネクションの詳細やTLSネゴシエーションに関するcurlの情報メッセージです。>または<のみを含む空行がヘッダーとボディを区切ります。このツールは3つのセクションすべてを自動的に解析します。

ステータスコードは明確に定義された数値体系に従います: 1xxコードは情報的(100 Continue)、2xxは成功(200 OK、201 Created、204 No Content)、3xxはリダイレクト(301 Permanent、302 Found、304 Not Modified)、4xxはクライアントエラー(400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、429 Too Many Requests)、5xxはサーバーエラー(500 Internal Error、502 Bad Gateway、503 Service Unavailable)を表します。

← すべてのツールに戻る