我想知道在AngularJs 1.5中是否有一种程序化的方法来清理(用户提供的)URL。我知道有$ sanitize服务,用于清理HTML,但我找不到适用于URL的东西。
示例好网址:
http://www.somedomain.com
示例危险网址:
javascript:document.write('Time for some fun');
答案 0 :(得分:0)
有无证件$$sanitizeUri
service可以做到这一点。它基本上是a function that adds unsafe
prefix to supplied URL。没有必要使用它的URL绑定到href
喜欢
<a href="{{url}}">
因为这已经由编译器完成(在那里使用$$sanitizeUri
)。
对于格式错误的网址,一般情况下最好手动处理它们,如果它不包含可接受的(http / https)协议,可能会添加http://
。
答案 1 :(得分:0)
我最终在URL上执行了以下正则表达式测试(受$$sanitizeUri service启发),然后在检查失败时执行特殊操作。
function navigateToUrl(url) {
var safeWhiteListRegex = \^(https?|ftps?|file?):\/\/\gi;
if (!safeWhiteListRegex.test(url)) {
// url = ...;
} else {
$window.open(url, "_blank");
}
}
一路上,我的一位朋友也发现了@braintree/sanitize-url节点模块,我也认为这是人们可以用于这种情况的东西。