Mettre à jour v8
Les réponses ci-dessous fonctionnent mais exposent votre application aux risques de sécurité XSS! . Au lieu d'utiliser this.sanitizer.bypassSecurityTrustResourceUrl(url)
, il est recommandé d'utiliserthis.sanitizer.sanitize(SecurityContext.URL, url)
Mettre à jour
Pour la version RC.6 ^ , utilisez DomSanitizer
Plunker
Et une bonne option consiste à utiliser pure pipe pour cela:
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);
}
}
n'oubliez pas d'ajouter votre nouveau SafePipe
au declarations
tableau de l'AppModule. ( comme vu sur la documentation )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Si vous utilisez une embed
balise, cela peut être intéressant pour vous:
Ancienne version RC.5
Vous pouvez utiliser DomSanitizationService
comme ceci:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
Et puis liez-vous url
dans votre modèle:
<iframe width="100%" height="300" [src]="url"></iframe>
N'oubliez pas d'ajouter les importations suivantes:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Échantillon Plunker
Pipe({ name: 'safe' }) export class SafePipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) {} transform(url): any { return this.sanitizer.bypassSecurityTrustResourceUrl(url); } }
et dans le modèle j'appelle<iframe width="100%" height="315" src="{{url}} | safe" frameborder="0" allowfullscreen></iframe>
. Mais cela ne fonctionne pas avec l'erreur «valeur dangereuse». S'il vous plaît aider[src]="url | safe"
Il suffit de supprimer les crochetsthis.sanitizer.sanitize(SecurityContext.URL, url)
j'obtiens une erreur "ERROR Error: unsafe value used in a resource URL context" II change it tothis.sanitizer.bypassSecurityTrustResourceUrl(url)
works fine. Une idée de ce qui ne va pas?this.sanitizer.sanitize(SecurityContext.URL, url)
ne fonctionne pas etthis.sanitizer.bypassSecurityTrustResourceUrl(url)
fonctionne mais soulève un problème de vulnérabilité de haute sécurité dans l'analyse de code statique, ce qui m'empêche de passer cela en production. Besoin d'un moyen de résoudre ce problèmeCelui-ci fonctionne pour moi.
la source
Cela me fonctionne à Angular 5.2.0
sarasa.Component.ts
sarasa.Component.html
c'est tout le monde !!!
la source
Je luttais depuis 4 heures. le problème était dans la balise img. Lorsque vous utilisez des crochets pour 'src' ex: [src]. vous ne pouvez pas utiliser cette expression angulaire {{}}. vous venez de donner directement à partir d'un exemple d'objet ci-dessous. si vous donnez une expression angulaire {{}}. vous obtiendrez une erreur d'interpolation.
J'ai d'abord utilisé ngFor pour parcourir les pays
deuxièmement, vous mettez ceci dans la balise img. Ça y est.
la source
J'ai également rencontré ce problème, mais afin d'utiliser un tube sécurisé dans mon module angulaire, j'ai installé le package safe-pipe npm, que vous pouvez trouver ici . FYI, cela a fonctionné dans Angular 9.1.3, je n'ai essayé cela dans aucune autre version d'Angular. Voici comment vous l'ajouter étape par étape:
Installez le package via npm install safe-pipe ou yarn add safe-pipe. Cela stockera une référence à celui-ci dans vos dépendances dans le fichier package.json, que vous devriez déjà avoir au démarrage d'un nouveau projet Angular.
Ajoutez le module SafePipeModule à NgModule.imports dans votre fichier de module angulaire comme ceci:
Ajoutez le tube sécurisé à un élément du modèle pour le composant angulaire que vous importez dans votre NgModule de cette façon:
la source
la source
Félicitations! ¨ ^^ J'ai une solution simple et efficace pour vous, oui!
Génial ;)
la source
unsafe value used in a resource URL context
<video> <source [src]=video.url type="video/mp4" /> Browser not supported </video>
en fait, vous pouvez l'utiliser pour afficher des documents aussi .. si vous avez des problèmes lors de l'utilisation de la balise vidéo, je suis là;)