iFrame 中的 Angular2 不安全资源 URL 与 DomSanitationService

2024-04-24

背景:

我正在为我们正在研究的过渡策略进行概念验证,该策略将在我们致力于将现有功能转换为 Angular 的同时将“旧”Web 应用程序引入 iFrame。

Issue:

我遇到的问题是尝试在 iFrame 上设置 src 标记。我正在尝试使用 DomSanitationService 组件,但即使启用了此组件,我仍然收到“不安全 URL”错误消息。

Code:

这是我目前拥有的;我尝试在组件从服务接收到 URL 后清理组件中的 URL。

http.component.ts

import { Component, OnInit } from '@angular/core';
import { HttpService } from './http.service';
import { SafeResourceUrl, DomSanitizationService } from '@angular/platform-browser';
@Component({
    selector: 'http-frame',
    template: `
        <h1>Angular Frame</h1>
        <iframe [src]='page'></iframe>
  `,
    providers: [
        HttpService,
        DomSanitizationService
    ]
})
export class HttpComponent implements OnInit {
    page:string = '';
    constructor(
        private httpService: HttpService,
        private sanitizer: DomSanitizationService
    ) {};
    ngOnInit(){
        this.httpService.getPage()
            .then(page => {
                console.log(page);
                this.page = this.sanitizer.bypassSecurityTrustResourceUrl(page);
                console.log(this.page);
            });

    }
}

http.service.ts

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';

@Injectable()
export class HttpService {

    private url = "https://www.google.com";
    private retryCount = 2;
    // See the "Take it slow" appendix

    constructor(private http: Http) {}

    getPage(){
        return Promise.resolve(this.url);
    }
}

Error:

platform-b​​rowser.umd.js:1900 原始异常:错误:不安全值 在资源 URL 上下文中使用(请参阅http://g.co/ng/security#xss http://g.co/ng/security#xss)


这对我有用,尽管可能有更好的解决方案。

home.component.ts

import { Component, OnInit } from '@angular/core';
import {GetPageService} from "../services/get_page.service";
import {DomSanitizationService, SafeResourceUrl} from     "@angular/platform-browser";

@Component({
  moduleId: module.id,
  selector: 'sd-home',
  templateUrl: 'home.component.html',
  styleUrls: ['home.component.css'],
  directives: [],
  providers: [GetPageService]
})
export class HomeComponent implements OnInit {
  page:SafeResourceUrl;

  constructor(private _gps: GetPageService,private sanitizer: DomSanitizationService) {}

  ngOnInit() {
    this._gps.getPage().subscribe(
        (data)=>{
          this.page = this.sanitizer.bypassSecurityTrustResourceUrl(data);
        }
    )

  }
}

get_page.service.ts

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from "rxjs/Rx";

@Injectable()
export class GetPageService {

    private url = "http://google.com";
    private retryCount = 2;
    // See the "Take it slow" appendix

    constructor(private _http: Http) {}

    getPage(){
        return this._http.get(this.url)
            .retry(this.retryCount)
            .map((res) => {
                return res.url;
            })
            .catch((err)=>{
            let errMsg = (err.error) ? err.errmsg : 'Unknown Error';
                console.error(errMsg);
                return Observable.throw(errMsg);
            })
    }
}

home.component.html

<iframe [src]='page'></iframe>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iFrame 中的 Angular2 不安全资源 URL 与 DomSanitationService 的相关文章

随机推荐

  • kotlin-stdlib-jre7 已弃用。请改用 kotlin-stdlib-jdk7

    昨天我更新了Android Studio版本和Kotlin插件版本 Android Studio版本 3 1 2 Kotlin 版本 1 2 41 当我使用此配置创建 Android 项目时 我收到 Kotlin 编译器警告 w home
  • 访问被拒绝查找属性 ro.vendor.hwui.texture_cache_size

    在启动活动时我收到此错误 Access denied finding property ro vendor hwui texture cache size 在 Android OREO 之前一切都工作正常 但在 Android Pie 中却
  • 如何在android中一次完成多个活动?

    我的活动流程如下 活动 A gt 活动 B gt 活动 C gt 活动 D 当用户位于活动 D 上并单击名为 退出 的按钮时 应用程序应返回到活动 B 并完成活动 C 并D 我该怎么做 注意 活动 B 和活动 D 是相同的类 但不同的实例
  • Seaborn 用直方图绘制分布图,其中 stat = 密度或概率?

    我知道 默认情况下 直方图方法是计算出现次数 相反 我们可以用密度或概率来可视化分布 sns displot data stat density or sns displot data stat probability 我的问题是我应该使用
  • 如何设置USB连接模式?

    我正在编写一个应用程序 该应用程序应该将数据转储到 SD 卡上 然后在 PC 上编写另一个应用程序 当设备连接到 PC 时 在光盘驱动器模式下 该应用程序应该读取数据 在我的 HTC Legend 上 有一个对话框可供选择 仅充电 HTC
  • Rails:检索嵌套数据时出错

    我尝试模拟一个系统 其中学生在与练习相关的盒子中工作 class Student lt ActiveRecord Base belongs to box class Box lt ActiveRecord Base belongs to p
  • WPF可编辑组合框IsFocused问题

    我正在开发一个带水印的ComboBox通过修改ComboBox ControlTemplate 当一切都很好ComboBox不处于可编辑模式 但是当我将编辑模式更改为 True 时 IsFocused属性永远不会设置为 True 这是因为在
  • 为什么复制 eval 会改变它的行为?

    根据rollupjs 文档 https rollupjs org guide en eval2 eval 简单地 复制 eval 为您提供了一个执行完全相同操作的函数 但该函数在全局范围而不是本地范围内运行 var eval2 eval f
  • 如何避免硬编码密钥进行加密(目标 C)?

    在我的 Objective C 代码中 我在代码中硬编码了一个消费者密钥和秘密 以用于 SHA 1 加密 我想知道是否可以避免硬编码以提高安全性 到目前为止我发现了以下内容 发现1 https www owasp org index php
  • ECMAScript 6 的 function.name 属性

    简单问题 这段代码的正确结果是什么 let f function let n f name or f 根据兼容表 http kangax github io compat table es6 n应该有这个值 f 然而 Mozilla 文档
  • 正则表达式捕获部分行

    我一直在努力捕获 snmp 响应的一部分 Text IF MIB ifDescr 1 1 1 g1 Office to DMZ Regex P
  • 如何使用我自己的 CSS 设计 Twitter 小部件的样式

    我有自己的 Twitter feed 设计 并且我想使用我自己的设计来设计默认 feed 的样式 有没有办法做到这一点 问题是您无法使用 CSS 选择器 因为它仅在加载页面后才出现 请检查这张图片 让您更多地了解我需要什么 Thanks 好
  • 使用 FileSystemWatcher 从文件中获取新行

    我正在观看一个包含以下代码的文件 FileSystemWatcher watcher new FileSystemWatcher watcher Path C watcher Filter t log watcher Changed new
  • matlab中的分箱

    我一直无法在 matlab 或 Octave 中找到函数来完成我想要的操作 我有一个两列的矩阵 m x 和 y 值 我知道我可以通过执行 m 1 或 m 2 来提取列 我想将其分成 可能 大小相等的较小矩阵 并绘制这些矩阵的平均值 换句话说
  • 替换sql server 2000中的ntext(超过4000个字符)

    如何替换sql server 2000中ntext列中超过4000个字符的文本 转换为 nvarchar max 不起作用 因为它会截断值 使用 TEXT NTEXT 是一团糟 这是尽快摆脱这些字段的众多原因之一 您需要使用 READTEX
  • 如何在Linux内核中启用CONFIG_PREEMPT选项?

    我是 Linux 内核编程的新手 尝试在 x86 64 上使用旧内核 Linux 2 6 32 我想启用其中的 CONFIG PREEMPT 选项 但找不到有关如何执行此操作的信息 我可以使用我的首选选项编译新内核 但不知道在这种情况下我需
  • 如何在没有 JoinTables 的 JPA 中创建一对多关系?

    我正在尝试使用以下表结构在 JPA 中创建 OneToMany 关系 CATALOG catalogId PK name PRODUCT productId PK name catalogId FK 我将类定义为 Entity public
  • Neo4j - 计算带有标签的节点

    我想要一个查询来计算数据集中有多少个节点具有每个标签 例如 标签A 100 标签B 200 我可以为每个单独的标签执行此操作 例如 MATCH n LabelA return count n 但是 我想在一个命令中为每个标签执行此操作 尝试
  • 普通的 console.warn() 显示在日志中,并带有服务器性“错误”

    当我记录一些东西时console warn 它似乎出现在 Stackdriver 日志中 严重性为 错误 Stackdriver 错误报告不显示这些错误 因此它们似乎不被视为错误 这使得无法过滤日志以仅显示错误 读取 Stackdriver
  • iFrame 中的 Angular2 不安全资源 URL 与 DomSanitationService

    背景 我正在为我们正在研究的过渡策略进行概念验证 该策略将在我们致力于将现有功能转换为 Angular 的同时将 旧 Web 应用程序引入 iFrame Issue 我遇到的问题是尝试在 iFrame 上设置 src 标记 我正在尝试使用