FortiGate automation webhook return curl perform error for Github API
FortiOS 從 6.0 開始提供一個名叫 Automation stitches
的功能,可以讓我們在 FortiGate 平台上做一些自動化的機制,而裡面包含了一個本篇要說明的 Webhook
功能。
我打算利用 Webhook 來跟 Github issue 進行 REST API 串接,依照 Github 上的說明在 FortiGate 上設置三個 header
結果怎麼測試都失敗
利用下面指令啟動 debug
1 | diagnose debug enable |
只有看到下面的訊息
1 | auto_curl_perform()-107: Curl perform error:22 - HTTP response code said error. |
重點訊息是
auto_curl_perform()-107: Curl perform error:22 - HTTP response code said error.
__action_webhook_status()-150: Failed to perform curl
只看到 HTTP response code said error
,而找遍了 Guide 及官方論壇上都沒有更詳細的資訊或指令可以看到 response message
最奇妙的是我直接使用 Github 官方的 curl 範例執行,卻是成功
後來直接 sniffer FortiGate 跟 curl 的 packets 進行比對才發現一個重要的資訊
curl 會自己幫你帶
User-Agent
這個 http header 出去,而 FortiGate 不會
最後在 FortiGate 也加上 User-Agent
就正常了
後來查了一下 Github API 文件裡有提到,API request 必須都要加上 User-Agent
,不然會被 rejected
Github API