Webhookリクエストの構造とヘッダーの役割
Webhookは、システム間でリアルタイムにイベントデータを伝送するための重要な仕組みです。送信元から送られてくるWebhookリクエストは、HTTPメソッド、ヘッダー、そしてリクエスト本文(ボディ)という標準的なHTTP構造で構成されています。
特にヘッダーは、受信側がデータを正しく処理するためのメタデータを提供します。例えば、データの形式を指定する Content-Type や、送信元の身元を証明するためのセキュリティ署名、リクエストが送信された時刻を示すタイムスタンプなどがヘッダーに含まれます。これらの情報を正確に読み解くことが、Webhook連携を安定して運用するための第一歩となります。
入力データの要件と制限事項
本ツールでWebhookリクエストを検査する際は、以下の3つの要素を入力します。
- メソッド: POST、PUT、PATCH、GET、DELETE のリストから選択します。
- ヘッダー: 「Name: value」の形式で、1行に1つのヘッダーを入力します。最大200行、かつ全体で100,000文字まで入力可能です。
- 本体: サーバー側で解析される前の、キャプチャされた正確な生の本文を貼り付けます。最大1,000,000文字まで入力可能です。
入力内容に不備がある場合、以下のエラーメッセージが表示されます。
- 「最初に少なくとも 1 つのヘッダーまたはリクエスト本文を貼り付けます。」
- 「ヘッダーがこのツールには長すぎます。無関係な値または重複する値を削除します。」
- 「このツールにはボディが長すぎます。 100万文字以内にしてください。」
- 「ヘッダー行が多すぎます。リクエストのヘッダー数は 200 個以下に抑えてください。」
- 「
‹line›: ヘッダー行 が無効です。名前: 値を使用します。」
異なるボディ形式の検出とフォーマット規則
Webhookのペイロード(本文)には、主にJSON形式やURLエンコードされたフォームデータ(URL-encoded)が使用されます。本ツールはこれらの形式を自動的に検出して整形します。
- JSON:
JSON.parseを用いて解析され、整形表示されます。この処理の過程で、元のデータにあった空白やフィールドの並び順は再構成されるため、元の配置は保持されません。解析できない場合は「本文は JSON のように見えますが、解析できませんでした。」というエラーが表示されます。 - URLエンコードフォーム: フォームデータとしてデコードされ、フォーマットされます。パーセントエンコードに不備がある場合は「フォーム本文に不完全なパーセントエスケープが含まれています。」というエラーが表示されます。
- その他の形式: XMLやマルチパート、バイナリデータなどはプレーンテキストとしてそのまま表示されます。
- 空の本文: 本文が未入力の場合は「(空のボディ)」と表示されます。
署名ヘッダーの検出と検証の区別
セキュリティが確保されたWebhookでは、改ざんやなりすましを防ぐために署名(シグネチャ)やタイムスタンプがヘッダーに付与されます。
本ツールは、ヘッダー名に含まれる signature、hmac、digest などのパターンや、一般的なタイムスタンプ名を自動的に識別し、「署名フィールド」としてリストアップします。該当するヘッダーが検出されない場合は「共通の署名または Webhook タイムスタンプ ヘッダーが見つかりませんでした。」と表示されます。
ここで重要なのは、「検査(インスペクト)」と「検証(ベリファイ)」の違いです。本ツールは署名ヘッダーの存在を検出するだけであり、HMACの計算、アルゴリズムの適用、ペイロードの生バイトデータの照合、秘密鍵(シークレット)を用いた検証、リプレイアタック対策のウィンドウ判定などは行いません。実際の検証には、送信元の署名ルール、シークレットまたはキー、および元のリクエストのバイトデータが必要です。
ローカル環境でのcURLテスト
Webhook受信サーバーの開発やデバッグにおいて、本番環境からのリクエストをローカル環境で再現してテストすることは極めて有効な手法です。
本ツールは、入力されたメソッド、ヘッダー、本文を基に、ローカルテスト用のcURLコマンドを自動的に生成します。このコマンドの送信先URLは http://localhost:3000/webhooks に固定されており、シェルエスケープされた状態で出力されます。開発者はこのコマンドをターミナルにコピー&ペーストするだけで、ローカルで起動しているWebhookハンドラーに対して、本番と同一のペイロードを繰り返し送信して挙動を確認できます。
プライバシーとデータ処理について
本ツールに入力されたすべてのリクエストデータ(メソッド、ヘッダー、本文)の処理は、完全に利用者のブラウザ内で行われます。貼り付けたリクエストはブラウザーに残ります。 BroBroGo はアップロードまたは保存しません。外部のサーバーにデータが送信されることはないため、機密性の高いヘッダー情報やペイロードであっても安心して検査を行うことができます。
よくある質問(FAQ)
このページはライブ Webhook コールバックを受信できますか?
いいえ。キャプチャしたリクエストを検査のためにここに貼り付けます。このページは、パブリック エンドポイントの作成、コールバックの受信、生成されたテスト リクエストの送信を行いません。
どの Webhook 本体形式を検査できますか?
JSON および URL エンコードされたフォーム本文が検出され、フォーマットされます。他の本文はプレーン テキストのままであるため、ツールは XML、マルチパート、またはバイナリ コンテンツを推測しません。
署名フィールドが見つかると、リクエストが本物であることが証明されますか?
いいえ。このツールは、署名と関連するタイムスタンプ ヘッダーのみを表示します。実際の検証には、送信者の正確な署名ルール、秘密鍵または公開鍵、および元のリクエスト バイトが必要です。