从Angular文档中可以看出$sceDelegateProvider.resourceUrlWhitelist
可以设置可信资源URL,但是我需要来自控制器的功能。
我想在我的服务中设置可信资源网址的白名单。因此,我只允许使用$sce
服务,而不是提供商..
我试图实现这个示例,但它导致了一个错误( “$ SCE:不安全 需要安全/可信赖的值“):
this.renderUrl = this.$sce.getTrustedUrl(
${this.baseUrl}
) + `/x/y/?name=${this.name};
然后将${this.baseUrl}
注入html:
renderUrl
有没有办法从<iframe ng-src="{{$ctrl.renderUrl}}"></iframe>
服务设置可信资源网址,因此它会被添加到可信资源网址的白名单中?
答案 0 :(得分:1)
创建过滤器:
app.filter('trusturl', ['$sce', function ($sce) {
return function(url) {
return $sce.trustAsResourceUrl(url);
};
}]);
在您的服务中:
// Injecting Filter in Service
app.service('trustUrlService', function ($scope,$filter) {
$scope.trustUrl = function(url){
return $filter('trusturl')(url);
};
});
在Controller中使用如下:
app.controller("myCtrl", function($scope,trustUrlService) {
$scope.url = trustUrlService.trustUrl(url);
});
在模板中你可以这样使用:
<iframe ng-src={{ imageHref | trusturl }}" />