Comment reconnaître l'échec du CORS
| Vérifier | Symptôme | Signification |
|---|---|---|
| Manifeste bloqué | La requête .m3u8 échoue avant le début de la lecture. | L'origine a besoin du Access-Control-Allow-Origin ou le joueur a besoin d'un proxy. |
| Clé bloquée | Le manifeste se charge, mais la lecture chiffrée échoue. | La clé AES-128 URL doit également autoriser CORS ou router via le même proxy. |
| Segments bloqués | La lecture démarre, puis se met en mémoire tampon ou s'arrête. | Chaque demande de segment .ts ou .m4s nécessite le même chemin CORS. |
| VLC fonctionne, le navigateur échoue | La lecture sur le bureau fonctionne, mais pas la lecture sur le Web. | Cela confirme généralement un problème CORS du navigateur, et non un flux interrompu. |
| Le contrôle en amont échoue | Les en-têtes personnalisés déclenchent une demande OPTIONS que l'origine rejette. | Évitez les en-têtes inutiles ou configurez le proxy/origine pour gérer les OPTIONS. |
Comment corriger ou tester une erreur HLS CORS
- 1
Vérifiez si le manifeste se charge
Ouvrez le M3U8URL ou collez-le dans le lecteur. Si la demande de manifeste est bloquée par le CORS, la lecture ne peut même pas démarrer.
- 2
Comparer avec VLC
Si le VLC peut lire le même URL mais que le navigateur ne le peut pas, le flux est probablement accessible et l'échec est le contrôle d'accès du navigateur.
- 3
Activer le proxy intelligent CORS
Activez le proxy pour que les manifestes, les clés de chiffrement et les segments multimédia transitent tous par une réponse que le navigateur peut lire.
- 4
Exécuter le rapport de santé
Utilisez le validateur via le proxy pour vérifier si les segments sont réellement vivants au lieu d'être simplement bloqués par CORS.
- 5
Ajoutez Referer uniquement lorsque cela est nécessaire
Si l'origine utilise la protection hotlink, définissez la page d'origine URL sur Referer. N'ajoutez pas d'en-têtes personnalisés à moins que l'origine ne l'exige.
Pourquoi le HLS a besoin du CORS sur plus d'un URL
Un lecteur HLS ne récupère pas un seul fichier. Il récupère un manifeste principal, une ou plusieurs listes de lecture multimédia, des clés de chiffrement pour les flux AES-128 et de nombreux segments URL. Un seul en-tête CORS manquant sur l'une de ces ressources peut interrompre la lecture, donc tester uniquement la première réponse .m3u8 n'est pas suffisant.
Ce que Access-Control-Allow-Origin devrait faire
Pour les flux publics, l'origine peut envoyer des Access-Control-Allow-Origin pour le site hébergeant le lecteur, ou utiliser un caractère générique lorsque les informations d'identification ne sont pas impliquées. Pour les flux privés, gardez l’origine verrouillée et utilisez un point de terminaison proxy contrôlé pour les tests. Évitez de mélanger des URL directs et proxy dans la même session HLS.
Pourquoi un proxy est utile pour le débogage
Un proxy permet au navigateur de demander les actifs HLS à partir de votre propre origine autorisée tandis que le proxy récupère le véritable manifeste, la clé et le segment URL. Cela permet de savoir si un flux est interrompu ou simplement bloqué par la politique du navigateur. Cela vous donne également un endroit pour ajouter Referer ou User-Agent lorsque l'origine l'exige.
Outils de débogage de flux associés
- M3U8 dépannage du lien couvre CORS, Referer, les segments morts, les limites du codec et le DRM.
- Lecteur RefererM3U8 personnalisé explique les flux protégés par hotlink qui nécessitent des en-têtes transférés.
Questions fréquemment posées
Qu'est-ce qui cause une erreur HLS CORS ?
Une erreur HLS CORS se produit lorsque le navigateur ne peut pas lire le manifeste M3U8, la clé de chiffrement ou les segments multimédias car l'origine n'a pas autorisé l'accès entre origines. Le VLC peut toujours lire le flux car le CORS est appliqué par les navigateurs.
Pourquoi mon flux M3U8 est-il lu dans VLC mais pas dans Chrome ?
Le VLC n'est pas limité par les contrôles CORS du navigateur. Si le VLC fonctionne et que Chrome échoue, le flux est généralement accessible, mais le navigateur ne peut pas lire une ou plusieurs requêtes HLS sans en-têtes CORS ni proxy.
Un proxy CORS peut-il corriger la lecture M3U8 ?
Oui, pour les tests et le débogage. Le proxy doit acheminer le manifeste, les listes de lecture multimédia, les clés et les segments afin que chaque requête HLS provienne d'une origine que le navigateur est autorisé à lire.
Les segments HLS ont-ils besoin d'en-têtes CORS ?
Oui. Le manifeste, les listes de lecture enfants, les clés et chaque segment multimédia doivent être lisibles par le navigateur. Un flux peut échouer même si le fichier .m3u8 de niveau supérieur possède des en-têtes CORS corrects.
Est-ce la même chose que la protection contre les hotlinks ?
Non. Le CORS est une règle d'accès au navigateur. La protection Hotlink est une règle d'origine qui peut nécessiter un Referer ou un User-Agent spécifique. Certains flux ont les deux problèmes, vous aurez donc peut-être besoin d'un proxy plus un Referer correspondant.