我已经安装了 WP Discourse 插件,一切似乎都运行正常,除了“同步评论数据”Webhook。它一直返回失败,状态码为 400。
这是响应内容:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
payload URL 看起来是正确的。
Webhook Secret Key 已在 Discourse 和 WP 插件中设置。
Content Type 为 application/json。
已勾选 Post Event。
已勾选 Check TLS certificate of payload url。
已勾选 Active。
非常感谢您的任何建议。
2 个赞
simon
2020 年4 月 8 日 16:23
2
请再次确认 Payload URL 和 Webhook 密钥是否设置正确。
如果问题仍未解决,请告知您 WordPress 站点使用的固定链接结构。固定链接结构可以在 WordPress 仪表板的“设置”>“固定链接”部分找到。
1 个赞
有效载荷 URL 和 Webhook 密钥已正确设置。
固定链接结构为“文章名称”。
1 个赞
simon
2020 年4 月 8 日 21:14
4
在 Discourse 的 Webhook 事件列表中点击“Ping”按钮后,您的 WordPress 站点会返回什么响应?
2 个赞
simon
2020 年4 月 23 日 22:24
7
您是否知道已在网站上禁用了 WordPress REST API?如果是这样,这将导致从 Discourse 发送的 Webhook 请求失败。
REST 看起来没问题……但当我在浏览器中输入 Payload URL 时,却收到 404 错误……
simon
2020 年4 月 25 日 00:08
10
这是预期的。Discourse 上 webhook 发布的路线仅接受 POST 请求。
simon
2020 年4 月 25 日 00:16
12
是的,ping 应该可以正常工作。
您在 Discourse 的 Webhook“负载 URL”字段中添加的 URL 格式是什么?您可以省略 URL 的域名部分。WordPress 中“同步评论数据”选项描述中提供的 URL 应该是正确的(它是根据您网站使用的固定链接结构生成的),但可能在您的情况下不正确。
simon
2020 年4 月 25 日 00:25
14
Payload URL 看起来是正确的。您的 WordPress 站点是否安装了任何与安全相关的插件,可能会阻止该请求?
simon
2020 年4 月 25 日 00:38
16
iThemes Security 插件的一个宣传功能是它可以用于阻止对 Rest API 的访问。值得确认一下这是否导致了该问题。
您无需在 WP Discourse 插件中使用“同步评论数据”Webhook。使用它的主要好处是,它可以让评论在 Discourse 上发布后立即显示,而无需等待长达 10 分钟来获取新评论。在流量非常大的网站上,Webhook 可以减少您的网站向 Discourse 发起的 API 请求数量。这主要影响在帖子索引页面上显示评论数量的网站。
是的,我已经让它运行起来了,但我希望实现 Webhooks 以避免延迟。我和我们的开发人员确认过,他说在安装安全插件之前或之后,都没有 REST API 被阻止的情况。这让我很困惑。
除了 Discourse 插件的 Webhook 页面之外,还有其他方法可以确认有效载荷 URL 吗?
simon
2020 年4 月 25 日 00:57
19
您上面发布的截图很好地表明负载 URL 是正确的。您收到的 400 响应代码表明 WordPress 服务器拒绝了该请求。如果是密钥不匹配的问题,您应该会收到 500 响应代码。
如果您可以访问 WordPress 站点的访问日志文件,它很可能会向您准确显示问题所在。
您知道具体应该查看哪个 WP 访问日志吗?我找不到任何有用的信息。