2017-12-21 5 views
3

I Video-Inhalte von einem 3rd-Party-Service auf meiner Website bin Anzeige:HTML5 Video - Get final src URL Ziel

<video src="http://www.example.com/api/v1/media/video.mp4?status=true"></video> 

Der Dienst der Sprache des Benutzers erkennt Geo-Location und Browser und gibt Video, das diejenigen passen Parameter.

Abgesehen von der Medien-URL bietet der Dienst nicht den tatsächlichen Dateinamen, den der jeweilige Benutzer erhalten hat.

Wie kann ich den endgültigen Medienpfad/-namen abrufen? Ich habe versucht, mehrere Möglichkeiten, aber Iframes von X-Frame-Optionen blockiert: DENY und AJAX blockiert auch.

+0

Haben Sie Operationen auf iframe html zu tun? Welches ist die URL oder Website von Drittanbietern? –

+0

Nicht sicher, ich verstehe vollständig, was Sie geschrieben haben, aber: wie ich schrieb, habe ich versucht, die URL in iframe zu verwenden, aber es blockiert durch X-Frames-Option. Was den zweiten Teil Ihrer Frage betrifft, ist die URL eine Drittpartei für meine Website-Domain. – mele

+0

Ich habe keine genauen Anforderungen, aber ich kann von CasperJS/PhantomJS erzählen, um dies zu erreichen, aber Sie müssen dies studieren. –

Antwort

3

Die kurze Antwort ist, dass Sie dies wahrscheinlich nicht alle auf der Client-Seite tun können. Sie werden in same-origin Probleme auftreten. Darüber hinaus ist es nicht möglich, die HTTP-Header eines Elementsdirekt abzurufen.

Wenn der Dienstanbieter für die Videos CORS Unterstützung aktiviert, können Sie möglicherweise die endgültige URL über eine Problemumgehung erhalten. Selbst wenn CORS aktiviert ist, können Sie die HTTP-Header oder die finale URL des Videos nicht vom Elementabrufen.

Sie können dieses Problem umgehen:

  1. eine Anfrage zweite HTTP Stellen (XMLHttpRequest, fetch, $.ajax, usw.) auf die gleiche URL.
  2. Machen Sie eine HEAD Anfrage statt einer GET Anfrage. GET Anforderungen versuchen, die gesamte Datei abzurufen. HEAD Anfragen laden nicht den Körper, nur die Header, die genug für die Auflösung der Umleitung wäre.
  3. Suchen Sie in den Kopfzeilen der HEAD-Antwort nach dem endgültigen URL-Pfad.

Hier ist ein Beispiel, das fetch verwendet:

var request = new Request(yourVideoUrl); 
request.mode = 'cors'; 
request.method = 'HEAD'; 

fetch(request) 
.then(function(res){ 
    console.log(res.url); // This should be the final URL 
}); 
+0

Guter Fang. Der Tippfehler wurde korrigiert. – pseudosavant