Je tente de télécharger des fichiers via un point de terminaison personnalisé en utilisant une API utilisateur depuis mon site web.
Je ne peux me connecter qu’avec un utilisateur administrateur.
Je peux littéralement tout faire d’autre, sauf télécharger des fichiers.
> [Erreur] L'origine https://my.domain n'est pas autorisée par Access-Control-Allow-Origin.
> [Erreur] L'API Fetch ne peut pas charger https://my.domain/m/upload.json en raison des contrôles de contrôle d'accès.
> [Erreur] Échec du chargement de la ressource : L'origine https://my.domain n'est pas autorisée par Access-Control-Allow-Origin. (upload.json, ligne 0)
> [Journal] API-CALL-ERROR – "/m/upload.json" – TypeError : L'origine https://my.domain n'est pas autorisée par Access-Control-Allow-Origin. (app.8eb0470a.chunk.js, ligne 1)
> TypeError : L'origine https://my.domain n'est pas autorisée par Access-Control-Allow-Origin.
J’ai ajouté https://my.domain et http://localhost:19006 (pour les tests) dans les paramètres CORS, et j’ai ajouté DISCOURSE_ENABLE_CORS true dans app.yml.
J’ai également essayé d’ajouter https://my.domain dans DISCOURSE_CORS_ORIGIN dans app.yml, mais cela n’a pas fonctionné non plus.
Qu’est-ce que je rate ?
La seule chose que je vois dans /shared/log/rails/production.log est 
TL;DR
Vérifiez tous les serveurs nginx ou autres impliqués. Dans mon cas, il y en avait trois : le site web, le conteneur Docker de Discourse et l’intérieur du conteneur Docker de Discourse. La directive client_max_body_size doit être définie sur la limite que vous souhaitez pour les uploads.
J’ai choisi client_max_body_size 999m simplement parce que je voulais limiter cela uniquement via les paramètres de Discourse. Vous pouvez ajouter cette ligne à l’intérieur des balises http ou server dans nginx.conf. Je préfère l’ajouter à la toute dernière ligne, juste pour être sûr 
Version plus détaillée :
Après une journée entière à fouiller et à télécharger Firefox… je le recommande vivement pour le développement web. J’ai découvert que la raison pour laquelle je ne pouvais pas uploader était due à la limite imposée par nginx à l’intérieur du conteneur Docker de Discourse (certains pourraient dire « oui… mais cela est défini dynamiquement lorsque le launcher est reconstruit »… - j’aime être certain :)). Ensuite, il y avait le fait que notre propre nginx, qui héberge l’image Docker, n’avait aucune limite définie, ce qui revenait par défaut à client_max_body_size 1MiB, ce qui n’est pas suffisant :). Après avoir modifié cela également, j’ai dû aller sur le nginx frontal et le modifier aussi. Trois modifications, six heures passées à jongler avec la gestion des requêtes préliminaires CORS dans nginx et un peu de stress, mais maintenant tout fonctionne.
2 « J'aime »