目标:将字符串变量从 Angular 应用程序(typesript)发送到位于另一台服务器上的 iFrame,以便它可以在有条件的情况下使用
问题:如何专门将 DomSanitizer 用于变量?
文档状态类型为:HTML、样式、脚本、网址。如果我只想发送一个纯字符串变量怎么办?文档对此并不清楚。
SecurityContext 显示相同的https://angular.io/api/core/SecurityContext。我试过脚本。我也尝试过清理方法,但它需要安全上下文。
我尝试使用脚本,但出现错误:错误:DomSanitizerImpl.push../node_modules/@angular/platform-的资源 URL 上下文中使用的不安全值(请参阅http://g.co/ng/security#xss )浏览器/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 等。
聊天组件.html:
<div class="iframe-container">
<iframe id="iframe_chatui" src="{{ chatURL }}/loading.html" class="chatiframe" allow="microphone; camera"></iframe>
</div>
聊天组件.ts:
ngAfterViewInit() {
this.safeScript = this.domSanitizer.bypassSecurityTrustScript(this.localeId);
let frame = document.getElementById('iframe_chatui');
}
当我添加以下内容时,出现错误:无法读取 null 的属性“contentWindow”
let frame = document.getElementById('iframe_chatui') as HTMLIFrameElement;
frame.contentWindow.postMessage(this.localeId, '*');