Угловое 2 - ИСКЛЮЧЕНИЕ: Ошибка: небезопасное значение, используемое в контексте URL ресурса
Я получаю следующую ошибку:
Угловое 2 - ИСКЛЮЧЕНИЕ: Ошибка: небезопасное значение, используемое в контексте URL ресурса
Может быть, это связано с тем, что при запуске нет элемента мультимедиа? Или это связано с тем, что URL-адрес не является безопасным? Я пытаюсь его дезинфицировать.
export class HomeComponent {
sanitizer: DomSanitizationService;
errorMessage: string;
activeMedia: MediaItem = new MediaItem(0, '', '', '', '', '', '');
constructor(
private mediaStorage: MediaStorageService,
private harvesterService: HarvesterService,
sanitizer: DomSanitizationService) {
this.sanitizer = sanitizer;
// Initial call -
harvesterService.getMediaItems(10, 'type', 'category');
let subscription = harvesterService.initialMediaHarvestedEvent.subscribe(() => {
this.activeMedia = mediaStorage.mediaList[0];
let newURL = this.activeMedia.URL + '?rel=0&autoplay=1';
newURL = newURL.replace('watch?v=', 'v/');
this.activeMedia.URL = newURL; //sanitizer.bypassSecurityTrustUrl(newURL);
console.log(newURL);
});
}
cleanURL(oldURL: string): SafeResourceUrl {
return this.sanitizer.bypassSecurityTrustUrl(oldURL);
}
}
Код шаблона:
<div class="row" >
<iframe
id="video"
class="video"
src="{{ cleanURL(activeMedia.URL) }}"
frameborder="0"
allowfullscreen>
</iframe>
</div>
Ответы
Ответ 1
ОБНОВЛЕНО: После изменения
src="{{cleanURL(activeMedia.URL)}}"
чтобы:
[src]="cleanURL(activeMedia.URL)"
Я получаю: ОРИГИНАЛЬНОЕ ИСКЛЮЧЕНИЕ: Ошибка: требуется безопасный ResourceURL, получил URL-адрес
который решается с изменением кода в методе cleanURL для:
return this.sanitizer.bypassSecurityTrustResourceUrl(oldURL);
Вместо:
return this.sanitizer.bypassSecurityTrustUrl(oldURL);
Ответ 2
Попробуйте следующее:
cleanURL(oldURL: string): string {
return this._sanitationService.sanitize(SecurityContext.URL, oldURL);
}