Support Kontaktieren Sie Support | Systemstatus Systemstatus
Inhalt der Seite

    Verstehen von CORS

    In diesem Thema erfahren Sie mehr über CORS und in das Web integrierte Einschränkungen hinsichtlich der Ursprungsübergreifenden Referenzierung von Assets wie Videos, Bildern und Skripten.

    Übersicht

    Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der es einer Webseite ermöglicht, Anfragen an eine andere Domain als die, von der aus die Seite bedient wurde, zu stellen. Normalerweise würden domänenübergreifende Anfragen sonst von Webbrowsern verboten. CORS definiert eine Art und Weise, wie Domänen interagieren können, um zu bestimmen, ob sie herkunftsübergreifende Anforderungen zulassen oder nicht.

    CORS und Brightcove

    Es gibt drei Fälle, in denen CORS mit Brightcove-Dienste/Produkten verwendet werden muss:

    1. Bildunterschriften für Videos: Die Datei, die Untertitel für ein Video enthält, kann in einer Nicht-BrightCove-Domäne gespeichert werden. Da das Video selbst von einer Brightcove-Domain bereitgestellt wird, führt dies zu domänenübergreifenden Problemen.
    2. Brightcove Spieler und HLS: Das Brightcove Player's HLS-Plugin verwendet AJAX-Anfragen, um das Manifest und die einzelnen Segmente des HLS-Videos abzurufen. Da diese HLS-Ressourcen in jeder mit dem Internet zugänglichen Domäne gespeichert werden können, werden diese Ressourcen wahrscheinlich von einem anderen Server (in der Regel einer CDN-Domain) als von der Brightcove-Domain bereitgestellt werden, die den Spieler bedient hat. Dies wird wiederum zu domänenübergreifenden Problemen führen.
    3. Video Standbild- und Thumbnail-Bilder: Für die Aufnahme von Videoaufzeichnungen und Miniaturbildern in Studio muss die Videowiedergabe mit CORS-Headern bedient werden (die standardmäßig auf den meisten Haus-CDNs von Brightcove aktiviert sein sollten); wenn Sie ein benutzerdefiniertes CDN haben oder eines wir haben noch nicht aktualisiert, Bilderfassung wird nicht funktionieren

    Lösungen

    Die Lösung, die Brightcove derzeit verwendet, beinhaltet die Konfiguration eines Access-Control-Allow-Origin Headers in der Konfigurationsdatei des CDN-Original-Servers. Es ist wichtig zu beachten, dass die folgenden Header-Informationen als Beispiel und nicht als Drop-In-Code-Snippet angeboten werden, da verschiedene CDN-Partner unterschiedliche Serverlösungen zur Bereitstellung ihrer Inhalte verwenden.

    Brightcove war mit der folgenden Header-Direktive für die Eigenschaften des hauseigenen CDN-Servers erfolgreich:

    <FilesMatch ".(vtt|xml)$">
                  Header set Access-Control-Allow-Headers: X-Requested-With
                  Header add Access-Control-Allow-Origin: http://admin.brightcove.com
              </FilesMatch>

    Im Folgenden finden Sie kurze Erläuterungen zur Richtlinie:

    • <FilesMatch ".(vtt|xml)$">: Diese Bedingung setzt den Access-Control-Allow-Origin Header nur für vtt- oder xml-Dateien. Tests haben bestätigt, dass dieser Header nicht mit Bildern oder anderen HTTP-Inhalten gesendet wird.
    • Header set Access-Control-Allow-Headers: X-Requested-With: Dieser Header ist erforderlich, damit der Access-Control-Allow-Origin Header funktioniert, da die Anfrage, die der Spieler stellt, ein XMLHttpRequest ist.
    • Header add Access-Control-Allow-Origin: http://admin.brightcove.com: Dies ist der Zugriffskontroll-Header selbst, um Inhalte aus der angegebenen Domäne zuzulassen.

    Aktivieren von CORS auf Apache

    Sie können in der Konfiguration von Apache-Servern einen Header festlegen, um CORS zu aktivieren. Platzieren Sie Folgendes in der entsprechenden .conf Datei:

    Header set Access-Control-Allow-Origin "*"

    Im obigen Beispiel fungieren die Sternchen als Wild Card und ermöglichen den Zugriff auf alle Domains. Der Platzhalter kann auch durch eine bestimmte Domäne ersetzt werden. Das funktioniert im Allgemeinen nicht für Brightcove-Spieler, da sich Assets in vielen Fällen auf mehreren Domains befinden. Sie können andere Lösungen implementieren, um den Zugriff auf eine bestimmte Whitelist von akzeptablen Domains zu beschränken.

    BYO CDN

    Wenn Sie ein Kunde mit einem BYO-CDN sind und domänenübergreifende Probleme haben, wenden Sie sich an Ihr CDN, um Hilfe bei der Konfiguration von CORS für Ihr Konto zu erhalten. Hier sind die Einstellungen, die wir empfehlen:

    • Access-Control-Allow-Header: X-Angefragte-mit
    • Zugriff-Control-Allow-Ursprung: *
    • Dateiformate: m3u8 m3u ts xml dfxp vtt mpd m4f mp4 jpg png

    Anforderungen für Token-Autorisierung

    Für den Fall, dass die Tokenautorisierung erforderlich ist, müssen Änderungen an der oben genannten Lösung vorgenommen werden. Im Falle einer Token-Autorisierung verbietet das CORS-Sicherheitsmodell ausdrücklich die Verwendung des * Charakters als Wert für den Access-Control-Allow-Origin Response-Header. Darüber hinaus ist der Access-Control-Allow-Credentials Response-Header erforderlich und muss auf true gesetzt sein.

    Eine aktualisierte Header-Direktive für die Token-Autorisierung lautet:

    <FilesMatch ".(m3u8 | m3u | ts)$">
            # with AJAX withCredentials=true (cookies sent, SSL allowed...)
            SetEnvIfNoCase ORIGIN (.*) ORIGIN=$1
            Header set Access-Control-Allow-Origin "%{ORIGIN}e"
            Header set Access-Control-Allow-Credentials "true"
            RewriteEngine On
            RewriteCond %{REQUEST_METHOD} OPTIONS
            RewriteRule ^(.*)$ $1 [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]
      </FilesMatch>

    In den folgenden Punkten werden die Unterschiede zur früheren Lösung beschrieben:

    • Die Direktive fragt die eingehende Anfrage nach dem Vorhandensein eines Origin-Headers ab, und wenn dieser Header vorhanden ist (normalerweise), legt seinen Wert auf eine Variable fest, die aufgerufen wird ORIGIN: SetEnvIfNoCase ORIGIN (.*) ORIGIN=$1
    • Der Wert des Access-Control-Allow-Origin Response-Headers wird auf den Wert der gerade erstellten ORIGIN Variable festgelegt: Header set Access-Control-Allow-Origin "%{ORIGIN}e"
    • Der Access-Control-Allow-Credentials Header muss auf Folgendes festgelegt sein true : Header set Access-Control-Allow-Credentials "true"

    HLS und CORS

    In einigen Umgebungen (wie Amazon S3) können Sie eine CORS-Konfiguration für HLS angeben. Im Folgenden wird CORS so konfiguriert, dass die HLS-Wiedergabe ermöglicht wird.

    <CORSConfiguration>
          <CORSRule>
          <AllowedOrigin>*</AllowedOrigin>
          <AllowedMethod>GET</AllowedMethod>
          </CORSRule>
    </CORSConfiguration>

    Weitere Informationen zu Amazon S3 finden Sie unter Aktivieren der Cross-Origin Resource Sharing.

    Obwohl es tangential zu CORS ist, muss der Clientbrowser alle Sitzungscookies akzeptieren, damit die Token-autorisierte HLS-Inhaltsbereitstellung ordnungsgemäß funktioniert. Während einige Client-Browser, wie Google Chrome und Mozilla Firefox, Sitzungscookies standardmäßig akzeptieren, muss diese Option bei anderen Browsern wie Internet Explorer nicht vom Benutzer aktiviert werden.


    Seite zuletzt aktualisiert am 28 Sep 2020