2017-05-31 63 views
0

我的问题是以下,我得到一个服务的响应,我应该显示回用户的整个HTML页面。现在这是Angular的一个问题,因为它认为如果我这样做,我可能会成为跨站点脚本的受害者。我从HTML获取的源代码是值得信赖的,因此我想以某种方式将它列入白名单或绕过清理程序,并将视图呈现给用户。从DomSanitizer bypasssecuritytrust不工作​​(角2)

我遇到的问题是,我得到的文件中还包含“风格”和“脚本”操纵的DOM标记,无论我如何放置旁路功能调用的东西被抓住,整个东西不能正确渲染。有什么办法可以分开HTML文件清除它,然后把它放回到一起或其他东西?

回答

0

你可以做什么,但违背了Angular原则,是将HTML标记附加到组件的innerhtml或DOM使用ElementRef@angular/core

样品appcomponent:

import { Component, ElementRef } from '@angular/core'; 

@Component({ 
    selector: 'my-app', 
    template: ``, 
}) 
export class AppComponent { 
    private htmlTemplate = ` 
    <div>Loading template</div> 
    <script type="text/javascript"> 
     console.log('loaded'); 
    </script> 
    `; 
    constructor(private elementRef: ElementRef) { } 

    ngAfterViewInit() { 
    let elem: Element = this.elementRef.nativeElement; 

    elem.innerHTML = this.htmlTemplate; 
    } 
} 
0

试试这个:

import { DomSanitizer } from '@angular/platform-browser'; 
constructor(private sanitizer: DomSanitizer) { } 

//where you want to use the unsafe html 
const sanitizedHtml = this.sanitizer.bypassSecurityTrustResourceUrl(html);