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: 如果参数不存在则返回现在的正则表达式,否则返回自身以供链式调用。
如对本文有疑问, 点击进行留言回复!!
轻松解决 org.apache.taglibs.standard.tlv.JstlCoreTLV 困惑
vert实践五——Json?Protocol Buffer?FlatBuffers?
[基于tensorflow的人脸检测] 基于神经网络的人脸检测8——验证训练好的神经网络
selenium + ajax抓取英雄联盟全部英雄的详细信息及多线程保存全部皮肤图片到本地
网友评论