Angular 8 使用 iframe

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 跨站脚本(XSS)是web应用中的一种典型的计算机安全漏洞。XSS允许攻击者可以在其他用户浏览的web页面中注入客...
    留七七阅读 12,492评论 1 26
  • 本博客转自:「作者:若愚链接:https://zhuanlan.zhihu.com/p/22361337来源:知乎...
    韩宝亿阅读 7,739评论 0 3
  • 之前积累了XSS 有一段时间,因为目前开始了一件有趣的工程,需要整合非常多的知识,其中Web 安全这一块出现最多的...
    刀背藏身阅读 13,075评论 0 16
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,021评论 1 45
  • 2017.04.22春花盛放,感恩奉献 我想每个人都有一颗奉献的心 300个生命的故事是否足以激起你内心的力量 把...
    旧时光你在哪阅读 1,657评论 0 0