Цель: отправить строковую переменную из приложения Angular (typesript) в iFrame, находящийся на другом сервере, чтобы ее можно было использовать в условном выражении.
Вопрос: как использовать DomSanitizer конкретно для переменной?
Типы состояний документации: HTML, Style, Script, Url. Что, если я просто хочу отправить обычную строковую переменную? Документация не ясна по этому поводу.
SecurityContext показывает тот же https://angular.io/api/core/SecurityContext . Скрипт пробовал. Я также пробовал метод санации, но для этого нужен контекст безопасности.
Я пытался использовать сценарий, но получаю сообщение об ошибке: Ошибка: небезопасное значение используется в контексте URL-адреса ресурса (см. http://g.co/ng/security#xss) в DomSanitizerImpl.push../node_modules/@angular/platform-browser/fesm5/platform-browser.js.DomSanitizerImpl.sanitize
Я прочитал (http://g.co/ng/security#xss) и (https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Security_concerns), а также другие статьи о domsanitizer, postmessage, жизненных циклах Angular и т. д. Я пробовал размещать код в разных областях файла, включая onload и т. д.
чат.component.html:
<div class="iframe-container">
<iframe id="iframe_chatui" src="{{ chatURL }}/loading.html" class="chatiframe" allow="microphone; camera"></iframe>
</div>
чат.component.ts:
ngAfterViewInit() {
this.safeScript = this.domSanitizer.bypassSecurityTrustScript(this.localeId);
let frame = document.getElementById('iframe_chatui');
}
когда я добавляю следующее, я получаю сообщение об ошибке: Невозможно прочитать свойство 'contentWindow' из null
let frame = document.getElementById('iframe_chatui') as HTMLIFrameElement;
frame.contentWindow.postMessage(this.localeId, '*');
const toSanitize = chatURL+"/loading.html"
- person Roberto Zvjerković   schedule 13.06.2019