# API调用在Cloudflare后返回403

**URL:** https://meta.discourse.org/t/api-calls-return-403-behind-cloudflare/325971
**Category:** Support
**Tags:** rest-api, cloudflare
**Created:** [2024年九月11日 08:48 UTC](https://meta.discourse.org/t/api-calls-return-403-behind-cloudflare/325971 "2024-09-11T08:48:22Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![MKorndoerfer](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mkorndoerfer/32/82766_2.png) [@MKorndoerfer](https://meta.discourse.org/u/MKorndoerfer)
#### Post date: [2024年九月11日 08:48 UTC](https://meta.discourse.org/t/api-calls-return-403-behind-cloudflare/325971/1 "2024-09-11T08:48:22Z")

</div>

这是我们的场景：

我们的 Discourse 运行在与主服务器分开的 EC2 实例上。Discourse 实例使用 Let’s Encrypt 通过内置机制创建自己的服务器证书。

主服务器使用其公共 DN 使用 Discourse 服务器的 API。

论坛是站点的一个子域，即“forum.[mydomain].com”。

这运行得很好。

现在我们已将整个站点置于 Cloudflare 之后。

如果通过浏览器访问，论坛本身运行得很好。

但是，如果主站点尝试使用 API 调用访问 Discourse 实例，现在会收到 403 错误。

我已经尝试了这里列出的所有步骤：[将 Discourse 与 Cloudflare 结合使用：最佳实践 - 文档 / 自我托管 - Discourse Meta](https://meta.discourse.org/t/using-discourse-with-cloudflare-best-practices/293405)，包括为 forum.[mydomain].com/u/by-external/\* 关闭浏览器完整性检查，但都没有效果。

Cloudflare 中的 SSL 设置为“Full”。未使用“Full (Strict)”，因为它也会导致站点宕机时的回退错误页面出现问题，所以我宁愿继续使用“Full”。

我不知道为什么 API 调用会因 403 而失败，也不知道如何解决该问题。目前，我已将 forum.[mydomain].com 的代理关闭作为一种解决方法，这确实解决了问题，但当然也意味着 Discourse 未被 Cloudflare 缓存或保护。

有什么想法可能出了问题吗？
