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类型列表。
   403   404   405   406   407   408   409   410   411   412   413