AndroidではRTEが使えず、iOSデバイスではエディタのモードを変更できない

私にはバグのように聞こえますが、そうであればここにその話題のトピックが見えるはずです。つまり、私のフォーラムだけがこの問題を抱えているなら、それは私の環境側の問題ということになります。

とにかく。

Androidユーザーはリッチテキストエディタを使用しているときに仮想キーボードが表示されません。Markdownに変更すると問題なく動作します。iPadとiPhone(Safari/PWA、DiscourseHub)はMarkdownに固定されており、RTEに変更できません。

おそらく2日前から始まったのだと思います。私のユーザーは、何かが壊れていることに気づいても、私に伝えるまで少し時間がかかる傾向があります。

ほかに何か…セルフホスト環境、コンテナ2つ構成、最新版を使用しており毎日アップグレードしています。執筆時点では最新のバージョンが20分前にリリースされたばかりです。セーフモードでは解決しません。

次の一手は何にすべきでしょうか?モバイルではコンソールやエラーの確認はできません。

存在はしますが、デバイスをラップトップに接続する必要があります。

私のタブレット(Android、上記で説明されたのと同じ問題)でそれを行い、以下の内容を確認しました。

(index):1 Access to script at 'https://cdnfoorumi.katiska.eu/assets/br/chunk-coedl1gv.digested.js' from origin 'https://foorumi.katiska.eu' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
prosemirror-editor-opfbo6zd.digested.js:1  GET https://cdnfoorumi.katiska.eu/assets/br/chunk-coedl1gv.digested.js net::ERR_FAILED 200 (OK)
d-editor.gjs:212 Uncaught (in promise) TypeError: Failed to fetch dynamically imported module: https://cdnfoorumi.katiska.eu/assets/br/prosemirror-editor-opfbo6zd.digested.js

ProsemirrorはRTEditorです。しかし、私が確認しているエラーメッセージを共有すること以上のことはできません。


余談ですが:「Kisses and animals」カテゴリについてのジョーク、笑わせてもらいました(残念ながら英語版の翻訳では「cats」となっているので、ドイツ語版にしておきます :wink:

以下を追加しました:

DISCOURSE_ENABLE_CORS: true

その後、web_only.yml をブートストラップし、CORS originshttps://foorumi.katiska.euhttps://cdnfoorumi.katiska.eu を追加しました。

しかし、うまくいきませんでした。

次に、以下を実行しました:

curl -sI -H 'Origin: https://foorumi.katiska.eu' 'https://cdnfoorumi.katiska.eu/assets/br/chunk-coedllgv.digested.js'

HTTP/2 403 
content-type: application/xml
access-control-allow-origin: *
access-control-allow-methods: GET, HEAD
access-control-max-age: 3000
server: AmazonS3
date: Thu, 10 Sep 2026 14:13:35 GMT
x-cache: Error from cloudfront
via: 1.1 <characters>.cloudfront.net (CloudFront)
x-amz-cf-pop: HEL51-P1
x-amz-cf-id: <characters>

ここに表示されている内容が理解できませんが、問題は S3 とその設定にあるのでしょうか? もしそうであれば、なぜ最近になって発生し始めたのでしょうか? 一つの兆候としては、昨日以降、ボードのメモを書けなくなっている点が挙げられます。

しかし、CORS が問題であるなら、なぜこれらだけが影響を受けているのでしょうか?


どうしてあの文脈で AI は Küsse を使ったのか、新旧の神々よ、教えてくれ :rofl:

最近のDiscourseの変更がこの問題の原因になったとは考えにくい。ただし、S3にはCORSに関する長年の厄介な挙動があり、Access-Control-Allow-Origin ヘッダーが付いていないアセットのバージョンがCDNにキャッシュされる原因となることがある。もしこれがキャッシュの問題であれば、一部のユーザー(おそらく場所による)にのみ影響を与える理由を説明できるだろう。

記憶が正しければ、S3はOriginヘッダー(つまり通常のWebブラウザからのリクエスト)を送信するリクエストに対してのみAccess-Control-Allow-Originヘッダーを返す。Access-Control-Allow-Originが省略された場合、レスポンスにVary: originを含めない。つまり:特定のアセットへの最初のリクエストがWebブラウザ以外のコンテキスト(例:curlやWebクローラーなど)から送信された場合、CDNはCORSヘッダーなしのバージョンをキャッシュしてしまう可能性がある。非常に厄介だ!

DISCOURSE_CORS設定はここでは全く役に立たない。それはアプリケーションサーバーに関連するだけで、S3には関係ない。

当社のホスティングでは、Cloudfrontを設定してすべてのレスポンスにAccess-Control-Allow-Origin: *を追加することで、この問題を回避している。これにより、S3の奇妙な挙動によって悪い結果がキャッシュされるのを防げる。

あるいは、Cloudfrontを設定してOriginリクエストヘッダーをキャッシュキーに含めることもできる。そうすれば、CORSレスポンスとCORSなしのレスポンスを別々に保持できる。

AmazonはCORSに関するドキュメントをこちらに多数掲載している。メモにこのリンクを入れていたが、これはまさにこの問題に関するフォーラムスレッドだったようだ…が、削除されてしまったらしい :cry:

でも、私はCloudfrontを使っていないので、これはAWSから来るのでしょうか?

本当に? :eyes:

❯ host cdnfoorumi.katiska.eu
cdnfoorumi.katiska.eu is an alias for djpzno7cbajfp.cloudfront.net.

編集: 明確にするために、ここで話しているのはAWS Cloudfrontのことであって、Cloudflareではありません(名前が非常に似ています! :sweat_smile:

うん、その通りだね — たしかに AWS CloudFront を使ってる :laughing: もし記憶が正しければ、独自ドメインを使う必要があるはず。たぶん。

はい、まさにその通りです。カスタムドメインには必須ですが、コストも安くなります(正しく覚えているなら、Cloudfrontの出口トラフィックはS3からの直接出口トラフィックよりも安いです)。