错误错误:角度2中资源URL上下文中使用的不安全值

时间:2017-11-07 07:36:27

标签: angular

我有以下HTML代码

<iframe #originalUrl [hidden]="!showOriginalDoc"  [src]="originalUrl"><span *ngIf="originalUrl===''">Original URL Not Available</span></iframe>

以下角度代码

 if(data.originalResearch.originalUrl===null)
  this.originalUrl='';
 else
  this.originalUrl = this.domSanitizer.bypassSecurityTrustResourceUrl(data.originalResearch.originalUrl);

上面的代码仍会抛出以下错误:

CuratorModalBodyComponent.html:123 ERROR错误:资源URL上下文中使用的不安全值(请参阅http://g.co/ng/security#xss)     在DomSanitizerImpl.vendor ../ node_modules / @ angular / platform-b​​rowser / @ angular / platform-b​​rowser.es5.js.DomSanitizerImpl.sanitize(platform-b​​rowser.es5.js?ffb0:3992)     在setElementProperty(core.es5.js?0445:9398)     在checkAndUpdateElementValue(core.es5.js?0445:9318)     在checkAndUpdateElementInline(core.es5.js?0445:9252)     在checkAndUpdateNodeInline(core.es5.js?0445:12357)     在checkAndUpdateNode(core.es5.js?0445:12303)     在debugCheckAndUpdateNode(core.es5.js?0445:13167)     在debugCheckRenderNodeFn(core.es5.js?0445:13146)

我正在使用angular 4.4.1

3 个答案:

答案 0 :(得分:1)

您似乎需要使用DomSanitizer来清理src。

import { DomSanitizer, SafeUrl } from '@angular/platform-browser';

constructor(private _sanitizationService: DomSanitizer){}

无论您需要什么,它都会将Src数据传递给此功能:

var imgSrc = this._sanitizationService.bypassSecurityTrustUrl('data:image/png;base64,' + yourSrc);

答案 1 :(得分:1)

以这种格式使用iframe:

<ifrmae [src]="variable_name">

在ts文件中:

import { DomSanitizer } from '@angular/platform-browser';

constructor(private dom:DomSanitizer)
{ 
    variable_name=this.dom.bypassSecurityTrustResourceUrl(url); 
}

答案 2 :(得分:0)

您的代码存在问题。您将本地模板名称提供给iframe,并且您使用相同的名称进行属性绑定。本地模板名称具有更高的优先级,因此[src]="originalUrl"将引用iframe。如果它在任何地方都没有使用,您应该更改#originalUrl或将其彻底删除。