Почему DomSanitizer не работает для строковых значений? - PullRequest
0 голосов
/ 13 июня 2019

Цель : отправить строковую переменную из приложения 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, '*');
...