So erkennen Sie den CORS-Fehler
| Überprüfen | Symptom | Bedeutung |
|---|---|---|
| Manifest blockiert | Die .m3u8-Anfrage schlägt fehl, bevor die Wiedergabe beginnt. | Der Ursprung benötigt Access-Control-Allow-Origin oder der Spieler benötigt einen Proxy. |
| Schlüssel gesperrt | Das Manifest wird geladen, aber die verschlüsselte Wiedergabe schlägt fehl. | Der AES-128-Schlüssel URL muss auch CORS zulassen oder über denselben Proxy weiterleiten. |
| Segmente blockiert | Die Wiedergabe beginnt, dann wird gepuffert oder angehalten. | Jede .ts- oder .m4s-Segmentanforderung benötigt denselben CORS-Pfad. |
| VLC funktioniert, Browser schlägt fehl | Die Desktop-Wiedergabe funktioniert, die Web-Wiedergabe jedoch nicht. | Dies bestätigt normalerweise ein Browser-CORS-Problem und keinen defekten Stream. |
| Preflight schlägt fehl | Benutzerdefinierte Header lösen eine OPTIONS-Anfrage aus, die der Ursprung ablehnt. | Vermeiden Sie unnötige Header oder konfigurieren Sie den Proxy/Origin für die Verarbeitung von OPTIONS. |
So beheben oder testen Sie einen HLS CORS-Fehler
- 1
Überprüfen Sie, ob das Manifest geladen wird
Öffnen Sie den M3U8 URL oder fügen Sie ihn in den Player ein. Wenn die Manifest-Anfrage durch CORS blockiert ist, kann die Wiedergabe nicht einmal gestartet werden.
- 2
Vergleiche mit VLC
Wenn VLC denselben URL abspielen kann, der Browser jedoch nicht, ist der Stream wahrscheinlich erreichbar und der Fehler liegt an der Browser-Zugriffskontrolle.
- 3
Aktivieren Sie den intelligenten CORS-Proxy
Aktivieren Sie den Proxy, damit Manifeste, Verschlüsselungsschlüssel und Mediensegmente alle über eine Antwort übertragen werden, die der Browser lesen kann.
- 4
Führen Sie den Gesundheitsbericht aus
Verwenden Sie den Validator über den Proxy, um zu prüfen, ob Segmente tatsächlich aktiv sind und nicht nur durch CORS blockiert werden.
- 5
Fügen Sie Referer nur bei Bedarf hinzu
Wenn der Ursprung Hotlink-Schutz verwendet, setzen Sie die Originalseite URL auf Referer. Fügen Sie keine benutzerdefinierten Header hinzu, es sei denn, der Ursprung erfordert dies.
Warum HLS CORS für mehr als einen URL benötigt
Ein HLS-Player holt nicht nur eine Datei. Es ruft ein Master-Manifest, eine oder mehrere Medienwiedergabelisten, Verschlüsselungsschlüssel für AES-128-Streams und viele Segment-URLs ab. Ein einzelner fehlender CORS-Header auf einer dieser Ressourcen kann die Wiedergabe unterbrechen, daher reicht es nicht aus, nur die erste .m3u8-Antwort zu testen.
Was Access-Control-Allow-Origin tun soll
Bei öffentlichen Streams kann der Ursprung Access-Control-Allow-Origin für die Website senden, die den Player hostet, oder einen Platzhalter verwenden, wenn keine Anmeldeinformationen erforderlich sind. Halten Sie bei privaten Streams den Ursprung gesperrt und verwenden Sie zum Testen einen kontrollierten Proxy-Endpunkt. Vermeiden Sie das Mischen von direkten und Proxy-URLs in derselben HLS-Sitzung.
Warum ein Proxy zum Debuggen nützlich ist
Ein Proxy lässt den Browser HLS-Assets von Ihrem eigenen zulässigen Ursprung anfordern, während der Proxy das echte Manifest, den Schlüssel und die Segment-URLs abruft. Dadurch kann festgestellt werden, ob ein Stream unterbrochen oder lediglich durch die Browserrichtlinie blockiert ist. Es gibt Ihnen auch eine Stelle, an der Sie Referer oder User-Agent hinzufügen können, wenn der Ursprung dies erfordert.
Verwandte Stream-Debugging-Tools
- M3U8 Link-Fehlerbehebung deckt CORS, Referer, tote Segmente, Codec-Grenzwerte und DRM ab.
- Benutzerdefinierter Referer M3U8-Spieler erklärt Hotlink-geschützte Streams, die weitergeleitete Header benötigen.
Häufig gestellte Fragen
Was verursacht einen HLS CORS-Fehler?
Ein HLS CORS-Fehler tritt auf, wenn der Browser das M3U8-Manifest, den Verschlüsselungsschlüssel oder die Mediensegmente nicht lesen kann, weil der Ursprung keinen ursprungsübergreifenden Zugriff zulässt. VLC kann den Stream weiterhin abspielen, da CORS von Browsern erzwungen wird.
Warum wird mein M3U8-Stream in VLC abgespielt, aber nicht in Chrome?
VLC wird nicht durch Browser-CORS-Prüfungen eingeschränkt. Wenn VLC funktioniert und Chrome ausfällt, ist der Stream normalerweise erreichbar, aber der Browser kann eine oder mehrere HLS-Anfragen ohne CORS-Header oder einen Proxy nicht lesen.
Kann ein CORS-Proxy die M3U8-Wiedergabe reparieren?
Ja, zum Testen und Debuggen. Der Proxy muss das Manifest, die Medienwiedergabelisten, Schlüssel und Segmente weiterleiten, sodass jede HLS-Anfrage von einem Ursprung stammt, den der Browser lesen darf.
Benötigen HLS-Segmente CORS-Header?
Ja. Das Manifest, untergeordnete Wiedergabelisten, Schlüssel und jedes Mediensegment müssen für den Browser lesbar sein. Ein Stream kann auch dann fehlschlagen, wenn die .m3u8-Datei der obersten Ebene korrekte CORS-Header enthält.
Ist das dasselbe wie Hotlink-Schutz?
Nein. CORS ist eine Browser-Zugriffsregel. Der Hotlink-Schutz ist eine Ursprungsregel, die möglicherweise einen bestimmten Referer oder User-Agent erfordert. Einige Streams haben beide Probleme, daher benötigen Sie möglicherweise einen Proxy und einen passenden Referer.