Les appareils Android ne peuvent pas utiliser RTE, et les iPhone ne peuvent pas changer le mode du composeur

Pour moi, cela ressemble à un bug, mais dans ce cas, je devrais voir un sujet à ce sujet ici. Donc, si mon forum est le seul concerné, cela doit être un problème de mon côté.

De toute façon.

Mes utilisateurs Android ne peuvent pas voir le clavier virtuel lorsqu’ils utilisent l’éditeur de texte enrichi. En passant au Markdown, tout fonctionne correctement. Les iPads et iPhones (Safari/PWA, DiscourseHub) sont bloqués en Markdown et ne peuvent pas passer à l’éditeur de texte enrichi.

Cela a commencé il y a deux jours, je crois. Mes utilisateurs ont tendance à attendre avant de me dire que quelque chose ne fonctionne pas.

Quoi d’autre… auto-hébergé, 2 conteneurs, à jour et mis à jour chaque jour, et la dernière version date de 20 minutes à l’heure où j’écris ceci, le mode sans échec ne résout rien.

Quelle est ma prochaine étape ? La console et les erreurs possibles ne sont pas une option sur les appareils mobiles.

C’est le cas, mais il faut connecter l’appareil à un ordinateur portable.

J’ai fait cela avec ma tablette (Android, problème identique à celui décrit ci-dessus) et je vois

(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 est l’éditeur de texte enrichi (RTEditor). Mais je ne peux pas aider davantage que de partager le message d’erreur que je vois.


Hors sujet : Merci pour le fou rire concernant ta catégorie « Baisers et animaux » (Malheureusement, la traduction anglaise dit « chats » à la place, donc je m’en tiendrai à la version allemande :wink: )

J’ai ajouté :

DISCOURSE_ENABLE_CORS: true

Ensuite, j’ai initialisé web_only.yml et j’ai ajouté https://foorumi.katiska.eu et https://cdnfoorumi.katiska.eu dans CORS origins.

Pas de chance.

Puis j’ai lancé :

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>

Je ne comprends pas ce que je vois ici, mais le problème vient-il de S3 et de mes réglages là-bas ? Si oui, pourquoi est-ce arrivé récemment ? Un symptôme pourrait être que, depuis hier, je n’arrivais plus à écrire de notes sur les forums.

Mais si CORS est le problème, pourquoi seules ces ressources sont-elles affectées ?


Pourquoi, au nom des dieux anciens et nouveaux, l’IA a-t-elle utilisé Küsse dans ce contexte :rofl:

Je ne pense pas qu’il y ait eu des récentes modifications de Discourse pour en être la cause. Cependant, S3 a un comportement étrange bien connu concernant CORS, qui peut amener les CDN à mettre en cache une version de la ressource sans l’en-tête Access-Control-Allow-Origin. Et s’il s’agit d’un problème de cache corrompu, cela pourrait expliquer pourquoi cela n’affecte que certains de vos utilisateurs (probablement en fonction de leur localisation).

Si je me souviens bien, S3 ne renvoie l’en-tête Access-Control-Allow-Origin que pour les requêtes qui envoient un en-tête Origin (c’est-à-dire celles provenant d’un navigateur web standard). Lorsque Access-Control-Allow-Origin est omis, il ne fournit pas Vary: origin dans sa réponse. Et donc : si la première requête pour une ressource donnée est envoyée depuis un contexte non-navigateur (par exemple curl, ou un robot d’indexation), le CDN peut mettre en cache la version sans l’en-tête CORS. Très agaçant !

Le paramètre DISCOURSE_CORS ne sera d’aucune utilité ici. Il ne concerne que le serveur d’application, pas S3.

Sur notre hébergement, nous contourner ce problème en configurant Cloudfront pour ajouter Access-Control-Allow-Origin: * à toutes les réponses. Cela garantit que le comportement étrange de S3 ne peut pas entraîner la mise en cache d’un résultat incorrect.

Alternativement, vous pouvez configurer Cloudfront pour inclure l’en-tête de requête Origin dans sa clé de cache, ce qui permettrait de séparer les réponses sans CORS des réponses avec CORS.

Amazon a une documentation complète sur CORS ici. J’avais ce lien dans mes notes, qui apparemment était un fil de forum sur exactement ce problème… mais il semble qu’ils l’aient supprimé :cry:

Mais je n’utilise pas Cloudfront, donc ça doit venir d’AWS ?

Vous en êtes sûr ? :eyes:

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

Modif : pour être clair, nous parlons ici d’AWS Cloudfront, pas de Cloudflare (les noms sont très similaires ! :sweat_smile:)

Oui, c’est vrai — je suis bien en train d’utiliser AWS CloudFront :laughing: Si je me souviens bien, il faut utiliser son propre nom de domaine. Ou quelque chose comme ça.

Oui, exactement — c’est nécessaire pour un domaine personnalisé, et cela permet aussi de réduire les coûts (la sortie via Cloudfront est moins chère que la sortie directe depuis S3, si ma mémoire est bonne)