Обновление v8
Приведенные ниже ответы работают, но подвергают ваше приложение угрозам безопасности XSS! , Вместо использования this.sanitizer.bypassSecurityTrustResourceUrl(url)
рекомендуется использоватьthis.sanitizer.sanitize(SecurityContext.URL, url)
Обновить
Для версии RC.6 ^ используйте DomSanitizer
Plunker
И хорошим вариантом для этого является использование чистой трубы:
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);
}
}
не забудьте добавить свой новый SafePipe
в declarations
массив AppModule. ( как видно из документации )
@NgModule({
declarations : [
...
SafePipe
],
})
HTML
<iframe width="100%" height="300" [src]="url | safe"></iframe>
Plunker
Если вы используете embed
тег, это может быть интересно для вас:
Старая версия RC.5
Вы можете использовать DomSanitizationService
как это:
export class YourComponent {
url: SafeResourceUrl;
constructor(sanitizer: DomSanitizationService) {
this.url = sanitizer.bypassSecurityTrustResourceUrl('your url');
}
}
А затем свяжите с url
в вашем шаблоне:
<iframe width="100%" height="300" [src]="url"></iframe>
Не забудьте добавить следующий импорт:
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
Образец плунжера
Pipe({ name: 'safe' }) export class SafePipe implements PipeTransform { constructor(private sanitizer: DomSanitizer) {} transform(url): any { return this.sanitizer.bypassSecurityTrustResourceUrl(url); } }
и в шаблоне звоню<iframe width="100%" height="315" src="{{url}} | safe" frameborder="0" allowfullscreen></iframe>
. Но это не работает с ошибкой «небезопасное значение». Пожалуйста, помогите[src]="url | safe"
Просто снимите скобкиthis.sanitizer.sanitize(SecurityContext.URL, url)
я получаю сообщение об ошибке «Ошибка ОШИБКИ: небезопасное значение, используемое в контексте URL ресурса»this.sanitizer.bypassSecurityTrustResourceUrl(url)
. Есть идеи, что может быть не так?this.sanitizer.sanitize(SecurityContext.URL, url)
не работает иthis.sanitizer.bypassSecurityTrustResourceUrl(url)
работает, но поднимает проблему высокой уязвимости безопасности при статическом анализе кода, что мешает мне перенести это на работу. Нужен способ это исправитьЭтот работает для меня.
источник
Это работает мне до Angular 5.2.0
sarasa.Component.ts
sarasa.Component.html
вот все люди !!!
источник
Я боролся в течение 4 часов. проблема была в теге img. Когда вы используете квадратную скобку для 'src', например: [src]. Вы не можете использовать это угловое выражение {{}}. Вы просто даете непосредственно из примера объекта ниже. если вы даете угловое выражение {{}}. Вы получите ошибку интерполяции.
Сначала я использовал ngFor для итерации стран
во-вторых, вы положили это в тег IMG. это оно.
источник
Я тоже столкнулся с этой проблемой, но чтобы использовать безопасную трубу в моем угловом модуле, я установил пакет npm для безопасной трубы, который вы можете найти здесь . К вашему сведению, это работало в Angular 9.1.3, я не пробовал этого в других версиях Angular. Вот как вы добавите это шаг за шагом:
Установите пакет через npm, установите безопасную трубу или пряжу и добавьте безопасную трубу. Это сохранит ссылку на него в ваших зависимостях в файле package.json, который вы должны уже иметь при запуске нового проекта Angular.
Добавьте модуль SafePipeModule в NgModule.imports в файле модуля Angular следующим образом:
Добавьте безопасный канал к элементу в шаблоне для углового компонента, который вы импортируете в свой NgModule, следующим образом:
источник
источник
Поздравляю! ¨ ^^ У меня есть простое и эффективное решение для вас, да!
Большой ;)
источник
unsafe value used in a resource URL context
<video> <source [src]=video.url type="video/mp4" /> Browser not supported </video>
на самом деле так, вы также можете использовать его для заказа документов. Если у вас возникли проблемы при использовании тега video, я здесь;)