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