当前位置: 首页 > 面试题库 >

在AngularJS中从受信任的源插入iframe

李兴安
2023-03-14
问题内容

试图使用ng-bind-htmlAngularJS将iframe插入页面,即使是最简单的形式,我也无法使其工作。

Java脚本

function Ctrl($scope) {
   $scope.showIt = '<iframe src="http://www.anything.com"></iframe>';
}

我的HTML:

<div ng-bind-html="showIt"></div>

问题答案:

您需要使用$
sce
服务来告诉angular在视图上呈现html内容

Angular Doc说

$ sce是一项为AngularJS 提供 严格的上下文转义
服务的服务。SCE通过以下方式帮助编写代码:(a)默认情况下是安全的,并且(b)使得对安全漏洞(例如XSS,clickjacking等)的审核变得更加容易。

在此之前,您需要ngSanitize在应用程序内部注入依赖项

您可以使用filter或两种方式进行操作controller

的HTML

<div ng-app="app" ng-controller="mainCtrl">
    Using Filter
    <div ng-bind-html="showIt | toTrusted"></div>
    Using Controller
    <div ng-bind-html="htmlSafe(showIt)"></div>
</div>

JavaScript代码

var app = angular.module('app', ['ngSanitize']).
controller('mainCtrl', function ($scope, $sce) {
    $scope.showIt = '<iframe src="http://www.anything.com"></iframe>';
    $scope.htmlSafe = function (data) {
        return $sce.trustAsHtml(data);
    }
}).
filter('toTrusted', function ($sce) {
    return function (value) {
        return $sce.trustAsHtml(value);
    };
});

从angular 1.2起,$ sce功能在以下版本中启用,您应该在angular的配置阶段启用/禁用它。

app.config(['$sceProvider', function($sceProvider) {
    $sceProvider.enabled(true);
}]);

这是工作小提琴



 类似资料:
  • 我们正在构建一个通过RabbitMQ接收消息的Spring Boot应用程序(2.0.4版本)。因此,包含与rabbit相关的配置: 配置: 原因:java.lang.IllegalArgumentException:类“My.Fancy.Package.Clazz”不在受信任的包[java.util,java.lang]中。如果您认为反序列化该类是安全的,请提供它的名称。如果序列化仅由受信任的源

  • 问题内容: 我已经为此寻找了很多,但我要么找不到答案,要么听不懂。一个具体的例子将赢得投票=) 我有一个返回HTML字符串的函数。 我无法更改功能。 我希望将由字符串表示的html插入到DOM中。 我很高兴使用控制器,指令,服务或其他任何可行的方法(并且是合理的良好做法)。 免责声明:我不太了解$ compile。 这是我尝试过的: 那没用。 我也尝试将其作为指令: 帮帮我? 问题答案: 基本上,

  • 问题内容: 我正在尝试使用Angular 1.2将iframe动态插入页面中。这是代码: HTML: js: 因此data.html是一个具有有效HTML开头的字符串 该字符串还包含一些div。所以它看起来像: 我在app.js’ngSanitize’中使用。它显示的是div(在iframe之后),而不是iframe本身。 如果我使用jQuery,基本上 效果很好…但是试图使其正确的angular

  • 问题内容: 接受并执行上传的不受信任的代码时,如何保护我的服务器免受恶意活动的侵害? 用户应该能够实现我的界面和给定的数据,执行一些计算并返回数据。不需要I / O操作,当然也不需要线程/进程操作或其他伪造。 使用java.policy文件可以拒绝所有内容(不授予任何权限)。 使用此策略文件,未授予的操作将导致安全异常。 这是万无一失的吗?我需要做更多的事情来保护服务器环境免受不可信来源的侵害吗?

  • 我有个小问题。我正在用selenium以特定的配置文件打开firefox浏览器,一个flash应用程序出现了。在这个应用程序中,我需要单击一些东西,所以我使用sikuli。问题是,当使用sikuli单击按钮时,我的应用程序会在匿名配置文件中打开浏览器,从而显示“不受信任的SSL证书”。 有没有办法为火狐的匿名配置文件设置AcceptUnTrust d证书? 我想提到的是,我的java代码中已经有s