I dispositivi Android non possono usare RTE, gli iPhone non possono cambiare la modalità della barra di composizione

Per me sembra un bug, ma in tal caso vedrei un argomento al riguardo qui. Quindi, se il mio forum è l’unico a riportarlo, il problema deve dipendere da me.

Comunque sia.

I miei utenti Android non riescono a visualizzare la tastiera virtuale quando utilizzano l’editor di testo ricco. Passando a Markdown, tutto funziona correttamente. Gli iPad e gli iPhone (Safari/PWA, DiscourseHub) sono bloccati su Markdown e non riescono a passare all’RTE.

Credo che sia iniziato due giorni fa. I miei utenti tendono ad aspettare prima di dirmi che qualcosa non va.

Altro… self-hosted, 2 container, aggiornato ogni giorno all’ultima versione e, al momento della stesura, l’aggiornamento più recente risale a 20 minuti fa. La modalità provvisoria non risolve il problema.

Qual è il mio prossimo passo? La console e gli eventuali errori non sono un’opzione sui dispositivi mobili.

Lo sono, ma è necessario collegare il dispositivo a un laptop.

L’ho fatto con il mio tablet (Android, stesso problema descritto sopra) e vedo

(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 è l’RTEditor. Ma non posso aiutarti oltre a condividere il messaggio di errore che vedo.


Fuori tema: Grazie per la risata sulla tua categoria “Baci e animali” (Purtroppo la traduzione in inglese dice ‘cats’ invece, quindi mi atterrò a quella in tedesco :wink: )

Ho aggiunto:

DISCOURSE_ENABLE_CORS: true

Poi ho eseguito il bootstrap di web_only.yml e ho aggiunto a CORS origins https://foorumi.katiska.eu e https://cdnfoorumi.katiska.eu.

Nessuna fortuna.

Poi ho eseguito:

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>

Non capisco cosa sto vedendo qui, ma il problema è S3 e le mie impostazioni lì? Se sì, perché è iniziato di recente? Un sintomo potrebbe essere che da ieri non riesco più a scrivere note su nessuna board.

Ma se il CORS è un problema, perché sono colpite solo quelle?


Per quale ragione, per i vecchi e nuovi dèi, l’IA ha usato Küsse in quel contesto :rofl:

Non credo che ci siano state modifiche recenti a Discourse che possano aver causato questo problema. Tuttavia, S3 ha una nota stranezza di lunga data con CORS, che può causare ai CDN di memorizzare nella cache una versione dell’asset priva dell’intestazione Access-Control-Allow-Origin. E se si tratta di un problema di cache errata, ciò potrebbe spiegare perché l’impatto si riscontra solo su alcuni dei vostri utenti (probabilmente in base alla loro posizione).

Se non ricordo male, S3 fornisce l’intestazione Access-Control-Allow-Origin solo alle richieste che inviano un’intestazione Origin (cioè quelle provenienti da un normale browser web). Quando Access-Control-Allow-Origin viene omesso, S3 non fornisce Vary: origin nella sua risposta. E quindi: se la prima richiesta per un determinato asset viene inviata da un contesto non browser (ad esempio curl o un crawler web), il CDN può memorizzare nella cache la versione priva dell’intestazione CORS. Molto fastidioso!

L’impostazione DISCOURSE_CORS non sarà di alcun aiuto in questo caso. È rilevante solo per il server dell’applicazione, non per S3.

Nel nostro hosting, aggiriamo questo problema configurando Cloudfront per aggiungere Access-Control-Allow-Origin: * a tutte le risposte. Ciò garantisce che il comportamento bizzarro di S3 non possa causare la memorizzazione nella cache di un risultato errato.

In alternativa, è possibile configurare Cloudfront per includere l’intestazione di richiesta Origin nella chiave di cache, il che manterrebbe separate le risposte non-CORS da quelle CORS.

Amazon ha un’ampia documentazione su CORS qui. Avevo questo link nei miei appunti, che apparentemente era un thread del forum su esattamente questo problema… ma sembra che lo abbiano eliminato :cry:

Ma io non uso Cloudfront, quindi deve provenire da AWS?

Sei sicuro? :eyes:

❯ host cdnfoorumi.katiska.eu
cdnfoorumi.katiska.eu è un alias per djpzno7cbajfp.cloudfront.net.

Modifica: per chiarezza, qui parliamo di AWS Cloudfront, non di Cloudflare (i nomi sono molto simili! :sweat_smile:)

Sì, è vero — certo, sto usando AWS CloudFront :laughing: Se non ricordo male, è necessario utilizzare un dominio proprio. O qualcosa del genere.

Sì, esattamente: è necessario per un dominio personalizzato e rende anche le cose più economiche (l’egress di Cloudfront costa meno rispetto all’egress diretto da S3, se non sbaglio).