Externe Ressource wird nicht von AngularJs geladen
Mit Angular und Phonegap, ich bin versuchen zu laden, ein video, das auf einem remote-server, aber bin auf ein Problem. In meiner JSON, die URL eingegeben ist als plain-HTTP-URL.
"src" : "http://www.somesite.com/myvideo.mp4"
Mein video Vorlage
<video controls poster="img/poster.png">
<source ng-src="{{object.src}}" type="video/mp4"/>
</video>
Alle meine anderen Daten geladen wird, aber wenn ich mir meine Konsole, ich bekomme diese Fehlermeldung:
Error: [$interpolate:interr] Can't interpolate: {{object.src}}
Error: [$sce:insecurl] Blocked loading resource from url not allowed by $sceDelegate policy. URL
Habe ich versucht, in das hinzufügen $compileProvider
in meiner config eingestellt, aber es nicht lösen, mein Problem.
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);
Sah ich die in diesem Beitrag über die cross-domain-Problems, aber ich bin mir nicht sicher, wie Sie diese zu lösen oder in welche Richtung ich gehen sollte. Irgendwelche Ideen? Jede Hilfe ist willkommen
InformationsquelleAutor der Frage mhartington | 2014-01-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist die einzige Lösung, die für mich gearbeitet:
Dann in einem iframe:
http://plnkr.co/edit/tYq22VjwB10WmytQO9Pb?p=preview
InformationsquelleAutor der Antwort Guy Sopher
Andere einfache Lösung ist, erstellen Sie einen filter:
Geben Sie dann den filter in
ng-src
:InformationsquelleAutor der Antwort David Boyd
Whitelist die Ressource mit $sceDelegateProvider
Verursacht wird dies durch eine neue Sicherheitspolitik in Eckigen 1.2. Es macht XSS härter zu verhindern, ein hacker aus-Wahlverfahren aus (d.h. eine Anfrage an eine fremde URL, die potenziell mit einer payload).
Herum zu erhalten, es richtig Sie brauchen, um die whitelist-domains, die Sie zulassen möchten, wie diese:
Diesem Beispiel ist entlehnt aus der Dokumentation, die Sie hier Lesen können:
https://docs.angularjs.org/api/ng/provider/$sceDelegateProvider
Werden Sie sicher, dass ngSanitize in Ihre app, um diese Arbeit zu machen.
Deaktivieren der Funktion
Wenn Sie möchten, schalten Sie diese nützliche Funktion, und Sie sicher sind, dass Ihre Daten sicher sind, können Sie einfach ermöglichen,**, in etwa so:
InformationsquelleAutor der Antwort superluminary
Hatte das gleiche Problem hier. Ich brauchte zum binden an Youtube-links. Was für mich gearbeitet, als eine Globale Lösungwar, fügen Sie den folgenden, um meine config:
Hinzufügen "selbst" in es ist wichtig - sonst wird Sie scheitern, Sie zu binden, zu allen URLs. Aus der Winkel-docs
Mit, dass an Ort und Stelle, ich bin jetzt in der Lage zu binden, direkt zu einem Youtube-link.
Du wirst natürlich müssen die regex anpassen, um Ihre Bedürfnisse. Hoffe, es hilft!
InformationsquelleAutor der Antwort zumek
Die besten und einfache Lösung für dieses Problem ist, übergeben Sie Ihre Daten von dieser Funktion im controller.
In der html-Seite
InformationsquelleAutor der Antwort Kajal M. Bambhaniya
Ich lief in das gleiche problem mit Videogular. Ich war immer Folgendes bei der Verwendung von ng-src:
Habe das problem behoben, indem eine grundlegende Richtlinie:
Html:
InformationsquelleAutor der Antwort cagan
Wenn jemand ist auf der Suche nach einem Typoskript Lösung:
.ts-Datei (Variablen zu ändern, wo zutreffend):
Html:
InformationsquelleAutor der Antwort GONeale
Basierend auf der Fehlermeldung, dein problem scheint zu sein, in Bezug auf interpolation (in der Regel Ihren Ausdruck
{{}}
), nicht um eine cross-domain-Problem. Im Grundeng-src="{{object.src}}"
saugt.ng-src
wurde mitimg
tag im Sinn IMO. Es ist vielleicht nicht angemessen für<source>
. Sehen http://docs.angularjs.org/api/ng.directive:ngSrcWenn Sie erklären
<source src="somesite.com/myvideo.mp4"; type="video/mp4"/>
ist, wird es funktionieren, richtig? (beachten Sie, dass ich entfernenng-src
zu Gunsten vonsrc
) Wenn nicht, es muss erst beseitigt werden.Dann sicher, dass
{{object.src}}
gibt den erwarteten Wert (außerhalb von<video>
):Wenn es gibt den erwarteten Wert mit der folgenden Anweisung tätig werden sollte:
InformationsquelleAutor der Antwort roland
Hatte ich diesen Fehler in testsdie Richtlinie
templateUrl
war nicht vertrauenswürdig, aber nur für die Skillung, so habe ich den template-Verzeichnis:Mein Hauptverzeichnis ist
app
.InformationsquelleAutor der Antwort ecoologic