Webhook 請求結構解析
在整合第三方服務時,掌握 Webhook 請求的確切結構是確保系統穩定對接的關鍵。Webhook 請求本質上是 HTTP 請求,由特定的 HTTP 方法、請求標頭以及請求內容(Body)組成。
透過分析這些組成部分,開發人員可以清楚了解發送端所傳遞的資料格式。例如,請求內容是採用 JSON 格式還是 URL 編碼的表單資料,這決定了接收端後台程式碼該如何正確解析傳入的載荷(Payload)。此外,請求標頭中通常包含用來辨識來源與確保傳輸安全的元數據,這些資訊對於後續的處理流程至關重要。
請求標頭與內容的輸入規範
為了準確檢查 Webhook 請求,本工具設定了明確的輸入限制與格式要求,以確保瀏覽器能高效處理資料:
- 方法:可從選單中選擇 POST、PUT、PATCH、GET、DELETE 等標準 HTTP 方法。
- 請求標頭:每行輸入一個標頭,必須嚴格遵守「名稱: 值」的格式。
- 最多支援 200 行非空的標頭設定。
- 標頭總字元數上限為 100,000 個字元。
- 請求內容:必須貼上在伺服器端進行任何解析或轉換之前的原始請求內容。
- 內容長度上限為 1,000,000 個字元。
在輸入過程中,若違反上述規範,系統會即時顯示對應的錯誤提示,例如「第 ‹line› 行標頭無效,請使用「名稱: 值」格式。」、「請求標頭行數過多,請保留在 200 行內。」或「請求內容過長,請控制在 1,000,000 個字元內。」。
格式化輸出與本機 cURL 測試
當您按下「檢查請求」後,工具會針對輸入的內容進行解析並輸出以下結果:
- 格式化請求內容:工具會自動偵測 JSON 與 URL 編碼(URL-encoded)的表單資料並進行排版優化。若請求內容為空,則會顯示「(請求內容為空)」。需要注意的是,JSON 內容在解析時是透過
JSON.parse處理並重新排序,因此原始的空白字元與欄位順序將會改變。 - 簽章欄位:系統會掃描並列出請求標頭中常見的簽章或時間戳記欄位。若未偵測到相關特徵,則顯示「未找到通用簽章或 webhook 時間戳標頭。」。
- 本機 cURL 測試:工具會自動生成一個標準的 cURL 命令,固定指向
http://localhost:3000/webhooks。此命令經過適當的 Shell 轉義,方便您直接複製並在本機終端機中重現該 Webhook 請求,進行後端邏輯的偵錯。
偵測錯誤與異常處理
在解析 Webhook 請求時,常見的格式錯誤會觸發特定的錯誤訊息。以下為常見的錯誤情境與對應的系統提示:
| 錯誤情境 | 系統顯示訊息 |
|---|---|
| 未輸入任何資料即執行檢查 | 請先貼上至少一個請求標頭或請求內容。 |
| 標頭總長度超出限制 | 請求標頭過長,請移除無關或重複的值。 |
| 內容疑似 JSON 但語法有誤 | 請求內容看起來是 JSON,但無法解析。 |
| 表單資料的百分比編碼不完整 | 表單內容含有不完整的百分比編碼。 |
確保原始請求內容的完整性對於排查這些錯誤至關重要。任何在擷取過程中因伺服器預解析而引入的修改,都可能導致簽章驗證失敗或格式解析錯誤。
簽章偵測與真實性驗證的區別
本工具在「簽章欄位」中,會透過名稱模式(例如 signature、hmac、digest 以及常見的時間戳記名稱)來識別並列出相關的標頭。
然而,必須強調的是,僅發現簽名欄位並不能證明請求是真實的——真正的驗證需要發送方的簽名規則、金鑰以及原始請求位元組。本工具僅進行欄位名稱的偵測,並不會計算 HMAC、執行任何密碼學演算法、比對原始載荷位元組、驗證金鑰、檢查重放攻擊時間視窗(Replay Window),亦不會進行任何特定第三方的驗證流程。
瀏覽器端隱私處理說明
本工具充分保障您的資料隱私。貼上的請求只會在你的瀏覽器中處理,BroBroGo 不會上傳或儲存。所有的解析、格式化與 cURL 指令生成工作皆在前端完成,不會將您的敏感 Webhook 載荷或金鑰標頭傳送至任何外部伺服器。
常見問題解答
此頁面可以接收即時 webhook 回呼嗎?
不能。請將已擷取的請求貼到這裡檢查。本頁不會建立公開端點、接收回呼或送出產生的測試請求。
可以檢查哪些 webhook 請求內容?
本工具會辨識並格式化 JSON 與 URL 編碼表單;XML、multipart、二進位等其他內容會保留為純文字,不會猜測格式。
找到簽名欄位是否證明請求是真的?
不能。這裡只會列出簽章與相關時間戳記標頭。真正的驗證還需要發送方的簽章規則、密鑰或公鑰,以及原始請求位元組。