angular2+使用iframe展示外链提示unsafe value used in a resource URL context解决方法

iframe在web项目中确实很少使用,但是在手机app中,很多人可能会使用到今天我在使用的过程中就出现了错误unsafe value used in a resource URL context,这个错误后面还跟了一个短网址,打开后就跳转到了angular.io的官方网站去了,大概是到了这里:https://angular.io/guide/security#xss,如果你英文水平不错,应该看看这个页面就会解决了吧!如果你懒得去官方研究那些难懂的英文,那么久跟着我一起来处理吧!
1、场景
比如说注册页面,需要用户同意相关法律法规以及注册条款等,因此就需要将相关的条款展示出来,一般的做法就是后端给出json数据或者其他类型的数据,让前端去调用。但是如果是一个简单的页面,那就没有必要进行数据库存储的话,那就直接在iframe中嵌入这个外部的url即可。
2、使用过程
如果不在ts中写url,直接在iframe的src中写url,我完全没有问题的,并且不会提示任何错误。但是由于之前我写了一个config.ts将所有的配置都放到了里面,包括url,因此我只能通过下面的方法进行实现!=
一般人会这样去使用url
import ......
public thisUrl = "http://www.egtch.com";
html模板中这样使用

<iframe src="{{thisUrl}}"></iframe>
或者
<iframe [src]="thisUrl"></iframe>
不过如此的逻辑并没有什么问题,但是angular依然提示了错误,最主要的原因是因为angular的安全机制阻止了这个外部的url,因此需要使用官方提供的一个安全方法Sanitization(我觉得应该是消毒或者杀毒之类的意思吧)。
3、使用DomSanitizer

//先导入功能模块DomSanitizer
import { DomSanitizer } from '@angular/platform-browser';
//在constructor中定义一个DomSanitizer
constructor(private sanitizer:DomSanitizer){
//在这里对url进行处理
this.url = this.sanitizer.bypassSecurityTrustResourceUrl('http://www.egtch.com');
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注