如何修复 Twilio 调用我的 webhook 的 403 错误?

How to fix 403 error what Twilio calls my webhook?

我们正在使用 Twilio。我们设置了 webhook,这样当 Twilio 接到电话时,它会将其转发到我们网站上的 URL。

这似乎工作正常。但是现在我对代码进行了更改,Twilio 突然在调用 webhook 时遇到问题。我们没有收到消息,如果我查看 Twilio 日志,它会显示出现 403 错误。 (我不能发誓以前从未发生过这种情况。我从来没有注意到消息丢失,但也许我在调试其他错误时错过了它,将丢失的消息归因于其他原因。)

真正奇怪的是,大约 2/3 的进来的消息被接收和处理得很好,但大约 1/3 得到 403 错误。这是在我们没有任何负载平衡的测试服务器上,因此所有请求都将转到我们应用程序的同一个实例。我今天一直在做的测试都是从同一个单元格 phone 到同一个 Twilio 号码。

我们确实有对应用的授权,但是授权都是在子目录上,而不是顶层,而且我们的web hook子目录没有设置授权。

我的 Web 挂钩在被调用时所做的第一件事就是向我发送一封电子邮件,其中包含来自 Twilio 的消息内容。 (用于调试目的。)我没有收到那封电子邮件,所以我很确定它没有被调用。正如我所说,我可以查看 Twilio 的日志,它说它收到了短信并在尝试将其转发到我的 webhook 时遇到 403 错误。

只有大约 1/3 的时间这一事实尤其令人费解。它来自相同的数字,相同的数字,在同一站点上完全相同 URL。为什么它有时有效而其他时候无效?

我试图通过直接调用 URL 在我的桌面上重现该问题,而不是通过 Twilio,但没有出现相同的错误。 (当我键入时,我突然想到下一个逻辑测试是在不通过 Twilio 的情况下点击服务器上的页面。)

哦,服务器是ASP.NET。代码在 VB 中,但我怀疑这是否重要,因为我们没有在代码失败时执行任何代码。当它没有收到 403 时,代码工作正常。

检查您的防火墙配置,因为它可能会阻止请求。

如果是,则 白名单 来自 Twilio 的请求。

我们在类似情况下使用 AWS WAF 和 运行:我们看到请求在 Twilio 调试器中出现 403 错误,但请求从未到达我们的端点。一旦我们调整了白名单,问题就消失了。