IFTTT调用GitHub WebHook返回403错误(Curl可正常运行)
问题描述
- 需求:自动化触发GitHub仓库的WebHook(repository dispatch事件)
- 本地通过curl命令可正常执行请求,命令如下:
curl --location --request POST 'https://api.github.com/repos/wiso/TemperaturaUfficio/dispatches?event_type=webhook' \ --header 'Accept: application/vnd.github+json' \ --header 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXX' \ --header 'Content-Type: application/json' \ --data-raw '{ "event_type": "test_webhook" }'
- 使用IFTTT的「发起Web请求」功能配置相同请求后,收到403错误提示:您的服务器返回403错误,无法向指定URL发起Web请求。
排查与解决步骤
清理URL中的冗余参数
GitHub的repository dispatch接口不需要在URL中携带event_type参数,该参数仅需放在请求体中。IFTTT配置时请将URL修改为:https://api.github.com/repos/wiso/TemperaturaUfficio/dispatches,去掉末尾的?event_type=webhook,避免参数冲突导致认证失败。校验Authorization头格式
确保IFTTT中Authorization头的内容为Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXX,注意Bearer与token之间必须有一个空格,且token无多余空格、换行或特殊字符,格式错误会直接触发403权限验证失败。确认请求体与Content-Type头
- 请求体必须是严格的JSON格式:
{"event_type": "test_webhook"},使用英文双引号,无语法错误; - 必须添加
Content-Type: application/json请求头,否则GitHub无法正确解析请求体,导致权限验证逻辑异常。
- 请求体必须是严格的JSON格式:
检查GitHub令牌权限
确认用于认证的Personal Access Token(PAT)已开启repo权限(仓库读写权限),无此权限会被GitHub拒绝请求返回403。可在GitHub的个人设置-开发者设置-Personal access tokens中查看并调整权限,必要时重新生成令牌。匹配curl的重定向与请求方法
curl命令使用了--location允许自动跟随重定向,IFTTT配置时需开启「跟随重定向」选项;同时确保请求方法设置为POST,而非默认的GET。
内容的提问来源于stack exchange,提问作者Ruggero Turra
相关产品推荐
相关产品推荐

