# 安卓设备无法使用 RTE，苹果设备无法切换编辑器模式

**URL:** <https://meta.discourse.org/t/androids-can-t-use-rte-i-devices-can-t-change-mode-of-the-composer/412094>\
**Category:** Self-hosting\
**Tags:** composer\
**Created:** [2026年九月10日 12:50 UTC](https://meta.discourse.org/t/androids-can-t-use-rte-i-devices-can-t-change-mode-of-the-composer/412094 "2026-09-10T12:50:37Z")\
**Posts on this page:** 1\
**Showing post:** 6

<div class="post-metadata">

**Author:** ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)\
**Post date:** [2026年九月10日 14:41 UTC](https://meta.discourse.org/t/androids-can-t-use-rte-i-devices-can-t-change-mode-of-the-composer/412094/6 "2026-09-10T14:41:50Z")

</div>

我认为最近 Discourse 的更新不太可能导致这个问题。不过，S3 在 CORS 方面一直存在一个奇怪的行为，这可能导致 CDN 缓存了一个没有 `Access-Control-Allow-Origin` 头的资源版本。如果确实是缓存问题，这或许能解释为什么只有部分用户受到影响（很可能与他们的地理位置有关）。

据我所知，S3 只会向发送了 `Origin` 头的请求（即来自普通 Web 浏览器的请求）返回 `Access-Control-Allow-Origin` 头。当省略 `Access-Control-Allow-Origin` 时，S3 不会在响应中提供 `Vary: origin`。因此：如果对某个资源的首次请求来自非 Web 浏览器环境（例如 `curl` 或某些网络爬虫），CDN 就可能缓存那个没有 CORS 头的版本。这非常令人烦恼！

这里的 `DISCOURSE_CORS` 设置完全帮不上忙。该设置仅与应用服务器相关，与 S3 无关。

在我们的托管环境中，我们通过配置 Cloudfront 在所有响应中添加 `Access-Control-Allow-Origin: *` 来规避这个问题。这样可以确保 S3 的这种奇怪行为不会导致缓存了错误的结果。

或者，你可以配置 Cloudfront 将 `Origin` 请求头包含在其缓存键中，这样就能将非 CORS 响应与 CORS 响应区分开来。

亚马逊在 [这里](https://aws.amazon.com/blogs/networking-and-content-delivery/cors-configuration-through-amazon-cloudfront/?utm_source=repost.aws&utm_medium=intelligent_search) 提供了大量关于 CORS 的文档。我的笔记里还有 [这个链接](https://forums.aws.amazon.com/thread.jspa?messageID=555417#555417)，它显然是一个专门讨论此问题的论坛帖子……但看起来它已经被删除了 😢

---

_[View the full topic](https://meta.discourse.org/t/androids-can-t-use-rte-i-devices-can-t-change-mode-of-the-composer/412094)._
