Page 408 - AngularJS权威教程
P. 408
388 第 29 章 安全性
确保所有的URL都只匹配与应用所在域一致的URL。使用一个正则表达式时,Angular会匹配与
测试资源对应的绝对URL。
如果这个数组为空,$sce会阻塞所有的URL。
使用'self'时可以在HTML文档中使用https协议的资源。
为了启动每个独立的URL,每个域都要加入白名单:
angular.module('myApp', [])
.config(['$sceDelegateProvider',
function($sceDelegateProvider) {
// 设置新的白名单
$sceDelegateProvider.resourceUrlWhitelist(['.*']);
}]);
默认情况下,白名单被设置为['self']。
29.3 URL 黑名单
也可以使用黑名单URL替换白名单。它通常比依靠白名单更安全,但是你可以结合使用它们。
对于可信任的域而言,白名单很有用;黑名单通常服务于域名重定向操作。
可以使用resourceUrlBlacklist()方法设置新的黑名单。这个方法也接受一个可选的参数。
黑名单列表(数组)。
如果没有传入参数,这个函数就会返回当前设置的黑名单数组。
如果传入了黑名单参数,新的数组就会替换原来的黑名单。
黑名单数组中的每个元素必须是一个正则表达式或者是字符串'self',尽管在使用黑名单的
情况下,它没什么用。但是使用正则表达式时,它匹配与测试资源相对的绝对URL。
对于可信任的内容,黑名单总是最后才决定什么是可接受的,什么是不可接受的。
默认情况下,黑名单被设置为一个空数组[ ]。
29.4 $sce API
$sce库中有两个我们会用到的主要函数,以及一系列辅助函数。
29.4.1 getTrusted
要获取一个特定类型的可信任版本的值,可以调用getTrusted()方法。
这个getTrusted()方法接受两个参数。
类型(字符串)。
这个字符串代表使用该值的上下文类型。对于可用类型可以查看sce类型列表。