Onebox a échoué pour les vidéos >5Mo : les serveurs retournent 200 OK au lieu de 206 Partial Content

Bonjour à tous,

Je rencontre un problème spécifique où les vidéos de plus de 5 Mo ne parviennent pas à générer d’aperçus Onebox sur mon instance Discourse (installation Docker standard), alors que les mêmes liens vidéo fonctionnent parfaitement sur d’autres sites Discourse.

Le Problème :
Lorsque je publie un lien vidéo (par exemple, un fichier .webm de 5,1 Mo), le Onebox échoue. J’ai isolé le problème à un échec dans la négociation de la requête Range.

Résultats du débogage depuis la console Rails :

  • Test Ruby Manuel (Succès) : En utilisant Net::HTTP standard et en définissant manuellement l’en-tête Range: bytes=0-10, j’obtiens avec succès un 206 Partial Content du serveur source.
  • Test Système Discourse (Échec) : Lorsque Discourse tente de récupérer la même URL via FinalDestination.new(url).get, il reçoit un 200 OK (Net::HTTPOK) au lieu d’un 206. Par conséquent, il tente de télécharger le fichier entier, atteint la limite de 5 Mo de MAX_REQUEST_SIZE_BYTES, et le Onebox échoue avec une erreur de “taille trop grande”.

J’ai déjà testé les configurations suivantes, mais le problème persiste :

  1. Définir une chaîne de type navigateur dans onebox_user_agent.
  2. Ajouter le domaine source à force_custom_user_agent_hosts.
  3. Vérifier qu’aucun proxy global n’est configuré sur le serveur (env | grep -i proxy est vide).
  4. Tester la même URL sur d’autres instances Discourse, où elle génère parfaitement un Onebox.

La Question :
Pourquoi une instance Discourse échouerait-elle à négocier une requête Range (206) alors qu’une autre instance, pointant vers l’URL exacte, réussit sur le même réseau ?

Y a-t-il une configuration interne spécifique, un middleware de sécurité ou une logique FinalDestination qui pourrait supprimer les en-têtes Range ou amener le serveur distant à revenir à une réponse 200 complète ?

Toute information ou indication sur la prochaine étape à suivre serait grandement appréciée !