Angular 4 使用 iframe

作者: 如果李白会编程 | 来源:发表于2018-08-10 21:04 被阅读80次
    import { Component } from '@angular/core';
    
    @Component({
      selector: 'exe-app',
      template: `
        <iframe [src]="iframe"></iframe>  
      `
    })
    export class AppComponent {
      iframe: string;
      constructor() {
        this.iframe = "https://www.jianshu.com/";       
      }
    }
    

    以上代码运行后,在浏览器中无法正常显示内容,控制台中输出了以下异常信息,因为有需要引入外部url的资源链接,但是,变量直接赋值url的话,会报错:
    EXCEPTION: Error in ./AppComponent class AppComponent - inline template:1:12 caused by: unsafe value used in a resource URL context (see http://g.co/ng/security#xss)

    主要是安全原因,Angular会认为你你赋值的url不安全(有兴趣可以了解一下跨站脚本Cross-site scripting,通常简称为XSS)。

    解决方法:
    DomSanitizer - bypassSecurityTrustHtml() 方法

    DomSanitizer通过清理值以在不同的DOM上下文中安全使用来帮助防止跨站点脚本安全漏洞(XSS)。

    import { DomSanitizer } from '@angular/platform-browser'
    
    @Component({
      selector: 'exe-app',
      template: `
     <iframe [src]="iframe"></iframe>  
      `
    })
    export class AppComponent {
      iframe: string;
      constructor(private sanitizer: DomSanitizer) {
        this.iframe= this.sanitizer.bypassSecurityTrustHtml('https://www.jianshu.com/');   
      }
    }
    
    参考资源

    https://www.angular.cn/api

    哪里有不明确或者错误,欢迎给我留言!

    我相信路飞最后一定会和女帝在一起的😊

    相关文章

      网友评论

        本文标题:Angular 4 使用 iframe

        本文链接:https://www.haomeiwen.com/subject/yjwlbftx.html