Update v8
Die folgenden Antworten funktionieren, setzen Ihre Anwendung jedoch XSS-Sicherheitsrisiken aus! . Anstelle der Verwendung this.sanitizer.bypassSecurityTrustResourceUrl(url)
wird die Verwendung empfohlenthis.sanitizer.sanitize(SecurityContext.URL, url)
Aktualisieren
Für RC.6 ^ Version Verwendung DomSanitizer
Plunker
Und eine gute Option ist die Verwendung von reinen Rohren:
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer} from '@angular/platform-browser';
@Pipe({ name: 'safe' })
export class SafePipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {}
transform(url) {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
Denken Sie daran, Ihr neues SafePipe
zum declarations
Array des AppModule hinzuzufügen. ( wie in der Dokumentation zu sehen )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Wenn Sie ein embed
Tag verwenden, könnte dies für Sie interessant sein:
Alte Version RC.5
Sie können Folgendes nutzen DomSanitizationService
:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
Und binden Sie dann url
in Ihre Vorlage:
<iframe width="100%" height="300" [src]="url"></iframe>
Vergessen Sie nicht, folgende Importe hinzuzufügen:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Plunker Probe
Pipe({ name: 'safe' }) export class SafePipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) {} transform(url): any { return this.sanitizer.bypassSecurityTrustResourceUrl(url); } }
und rufe in der Vorlage an<iframe width="100%" height="315" src="{{url}} | safe" frameborder="0" allowfullscreen></iframe>
. Aber es funktioniert nicht mit dem Fehler 'unsicherer Wert'. Bitte helfen Sie[src]="url | safe"
entfernen Sie einfach Klammernthis.sanitizer.sanitize(SecurityContext.URL, url)
, wird die Fehlermeldung "FEHLER Fehler: Unsicherer Wert, der in einem Ressourcen-URL-Kontext verwendet wird" angezeigt. II Ändern Sie ihn so, dass erthis.sanitizer.bypassSecurityTrustResourceUrl(url)
einwandfrei funktioniert. Irgendeine Idee, was falsch sein kann?this.sanitizer.sanitize(SecurityContext.URL, url)
funktioniert nicht undthis.sanitizer.bypassSecurityTrustResourceUrl(url)
funktioniert, wirft jedoch ein Problem mit hoher Sicherheitslücke in der statischen Code-Analyse auf, das mich daran hindert, dies in die Produktion zu verlagern. Brauchen Sie einen Weg, um dies zu behebenDieser arbeitet für mich.
quelle
Das funktioniert bei Angular 5.2.0
sarasa.Component.ts
sarasa.Component.html
das war's Leute!!!
quelle
Ich hatte 4 Stunden lang gekämpft. das problem war im img tag. Wenn Sie eine eckige Klammer für 'src' verwenden, z. B.: [Src]. Sie können diesen Winkelausdruck {{}} nicht verwenden. Sie geben nur direkt aus einem Objektbeispiel unten. wenn Sie einen Winkelausdruck {{}} angeben. Sie erhalten einen Interpolationsfehler.
Zuerst habe ich ngFor verwendet, um die Länder zu iterieren
Zweitens setzen Sie dies in das img-Tag. Das ist es.
quelle
Ich bin auch auf dieses Problem gestoßen, aber um ein sicheres Rohr in meinem Winkelmodul zu verwenden, habe ich das Safe-Pipe-npm-Paket installiert, das Sie hier finden . Zu Ihrer Information, dies hat in Angular 9.1.3 funktioniert. Ich habe dies in keiner anderen Version von Angular versucht. So fügen Sie es Schritt für Schritt hinzu:
Installieren Sie das Paket über npm. Installieren Sie das Safe-Rohr oder fügen Sie das Safe-Rohr hinzu. Dadurch wird ein Verweis darauf in Ihren Abhängigkeiten in der Datei package.json gespeichert, die Sie bereits beim Starten eines neuen Angular-Projekts haben sollten.
Fügen Sie das SafePipeModule-Modul wie folgt zu NgModule.imports in Ihrer Angular-Moduldatei hinzu:
Fügen Sie die sichere Pipe einem Element in der Vorlage für die Angular-Komponente hinzu, die Sie auf folgende Weise in Ihr NgModule importieren:
quelle
quelle
Glückwunsch! ¨ ^^ Ich habe eine einfache und effiziente Lösung für Sie, ja!
Toll ;)
quelle
unsafe value used in a resource URL context
<video> <source [src]=video.url type="video/mp4" /> Browser not supported </video>
Video' -Tag suchen, wird es tatsächlich so sein. Sie können es auch verwenden, um Dokumente anzuzeigen. Wenn Sie Probleme bei der Verwendung des Video-Tags haben, bin ich hier;)