首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何设置<iframe src="...">而不引发` `unsafe value`异常?

如何设置<iframe src="...">而不引发` `unsafe value`异常?
EN

Stack Overflow用户
提问于 2016-06-26 18:54:09
回答 3查看 239.4K关注 0票数 192

我正在编写一个关于iframe src属性设置的教程:

代码语言:javascript
运行
复制
<iframe width="100%" height="300" src="{{video.url}}"></iframe>

这会抛出一个异常:

代码语言:javascript
运行
复制
Error: unsafe value used in a resource URL context
at DomSanitizationServiceImpl.sanitize...

我已经尝试在[src]中使用绑定,但没有成功。

EN

回答 3

Stack Overflow用户

发布于 2017-03-16 13:27:14

这个很适合我。

代码语言:javascript
运行
复制
import { Component,Input,OnInit} from '@angular/core';
import {DomSanitizer,SafeResourceUrl,} from '@angular/platform-browser';

@Component({
    moduleId: module.id,
    selector: 'player',
    templateUrl: './player.component.html',
    styleUrls:['./player.component.scss'],
    
})
export class PlayerComponent implements OnInit{
    @Input()
    id:string; 
    url: SafeResourceUrl;
    constructor (public sanitizer:DomSanitizer) {
    }
    ngOnInit() {
        this.url = this.sanitizer.bypassSecurityTrustResourceUrl(this.id);      
    }
}
票数 39
EN

Stack Overflow用户

发布于 2021-09-16 15:57:00

老实说,所有的答案似乎都错了。使用this.sanitizer.bypassSecurityTrustResourceUrl(url)只会绕过安全性,并将url视为SafeResourceUrl。然而,给定url可能仍然是恶意的,从而导致安全违规。医生也这么说:https://angular.io/api/platform-browser/DomSanitizer#bypassSecurityTrustResourceUrl

一种解决方案是首先调用sanitizer,然后将sanitizer返回值传递给bypassSecurityTrustResourceUrl,如下所示:

this.sanitizer.bypassSecurityTrustResourceUrl(this.sanitizer.sanitize(SecurityContext.URL, url))

通过这种方式,您可以清理任何恶意代码,然后绕过安全机制,这表明这确实是一个安全的url。

票数 2
EN

Stack Overflow用户

发布于 2021-06-03 09:25:12

这对我很管用

我在iframe中定义了一个id。

代码语言:javascript
运行
复制
<iframe id="embeddedPage"></iframe>

在组件中,我使用了以下代码

代码语言:javascript
运行
复制
export class YourComponent implements OnInit {
    
  constructor() {}

  ngOnInit(): void {
    const iframe =  document.getElementById('embeddedPage') as HTMLIFrameElement;
    iframe.contentWindow.location.replace('your url');
  }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38037760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档