Atualização v8
As respostas abaixo funcionam, mas expõem seu aplicativo a riscos de segurança XSS! . Em vez de usar this.sanitizer.bypassSecurityTrustResourceUrl(url)
, é recomendável usarthis.sanitizer.sanitize(SecurityContext.URL, url)
Atualizar
Para a versão RC.6 ^ , use o DomSanitizer
Plunker
E uma boa opção é usar tubo puro para isso:
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);
}
}
lembre-se de adicionar seu novo SafePipe
à declarations
matriz do AppModule. ( como visto na documentação )
@NgModule({
declarations : [
...
SafePipe
],
})
html
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Se você usar a embed
tag, isso pode ser interessante para você:
Versão antiga RC.5
Você pode aproveitar DomSanitizationService
assim:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
E, em seguida, vincule-o ao url
seu modelo:
<iframe width="100%" height="300" [src]="url"></iframe>
Não se esqueça de adicionar as seguintes importações:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Amostra Plunker
Pipe({ name: 'safe' }) export class SafePipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) {} transform(url): any { return this.sanitizer.bypassSecurityTrustResourceUrl(url); } }
e no modelo eu chamo<iframe width="100%" height="315" src="{{url}} | safe" frameborder="0" allowfullscreen></iframe>
. Mas não funciona com o erro 'valor inseguro'. Por favor ajude[src]="url | safe"
apenas suportes removathis.sanitizer.sanitize(SecurityContext.URL, url)
, estou recebendo o erro "Erro de erro: valor inseguro usado em um contexto de URL de recurso" II altere-o para quethis.sanitizer.bypassSecurityTrustResourceUrl(url)
funcione bem. Alguma idéia do que pode estar errado?this.sanitizer.sanitize(SecurityContext.URL, url)
não funciona ethis.sanitizer.bypassSecurityTrustResourceUrl(url)
funciona, mas levanta um problema de vulnerabilidade de alta segurança na análise de código estático, o que me impede de mudar isso para produção. Preciso de uma maneira de consertar issoEste funciona para mim.
fonte
Isso funciona para o Angular 5.2.0
sarasa.Component.ts
sarasa.Component.html
isso é tudo, pessoal!!!
fonte
Eu estava lutando por 4 horas. o problema estava na tag img. Quando você usa colchete para 'src' ex: [src]. você não pode usar esta expressão angular {{}}. você apenas fornece diretamente de um exemplo de objeto abaixo. se você der expressão angular {{}}. você receberá um erro de interpolação.
primeiro eu usei ngFor para iterar os países
segundo, você coloca isso na tag img. é isso.
fonte
Também deparei com esse problema, mas para usar um pipe seguro no meu módulo angular, instalei o pacote npm do safe-pipe, que você pode encontrar aqui . Para sua informação, isso funcionou no Angular 9.1.3, não tentei isso em nenhuma outra versão do Angular. Veja como você o adiciona passo a passo:
Instale o pacote via npm install pipe-safe ou wire add-safe-pipe. Isso armazenará uma referência a ele em suas dependências no arquivo package.json, que você já deveria ter ao iniciar um novo projeto Angular.
Adicione o módulo SafePipeModule ao NgModule.imports no arquivo do módulo Angular da seguinte maneira:
Adicione o pipe seguro a um elemento no modelo do componente Angular que você está importando para o seu NgModule da seguinte maneira:
fonte
fonte
Parabéns! ¨ ^^ Eu tenho uma solução fácil e eficiente para você, sim!
Ótimo ;)
fonte
unsafe value used in a resource URL context
<video> <source [src]=video.url type="video/mp4" /> Browser not supported </video>
, também poderá usá-lo para exibir documentos também .. se você tiver algum problema ao usar a tag de vídeo, eu estou aqui;)