angular对href是有安全检查的,只能生成它认为安全的链接,所以在我们加载绑定base64的图片或者一些tel,sml链接的时候,会报出类似下面的错误
解决办法很简单,AngularJS内置的provider——$compileProvider
$compileProvider.aHrefSanitizationWhitelist([regexp])可以设置urls安全列表的正则表达式,就不会报上面的问题了。
例如:解决图片中base64图片加载失败的问题:
angular.module('app').config( [
'$compileProvider',
function( $compileProvider )
{
$compileProvider.aHrefSanitizationWhitelist(/^\s*(data):/);
// Angular v1.2 之前使用 $compileProvider.urlSanitizationWhitelist(/^\s*(data):/)
}
]);
这样就可以解决了
更多url设置如:
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|file|sms|data):/);
$compileProvider.aHrefSanitizationWhitelist([regexp]):
恢复或者覆盖白名单urls安全列表的正则表达式,主要用于阻止通过html链接进行的xss攻击。任何将要通过数据绑定到a[href]的urls首先都要经过初始化并转化为一个绝对url,如果这个url匹配aHrefSanitizationWhitelist的正则表达式规则,则会被添加到DOM中,否则转化后的url将会加上’unsafe:‘前缀后才能被加入到DOM中。
参数:
regexp:RegExp,新的白名单正则表达式。
return:
如果参数不存在则返回现在的正则表达式,否则返回自身以供链式调用。