AngularJs如何清理控制器中的URL?

时间:2017-08-25 16:41:48

标签: javascript angularjs ngsanitize

我想知道在AngularJs 1.5中是否有一种程序化的方法来清理(用户提供的)URL。我知道有$ sanitize服务,用于清理HTML,但我找不到适用于URL的东西。

示例好网址:

http://www.somedomain.com

示例危险网址:

javascript:document.write('Time for some fun');

2 个答案:

答案 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节点模块,我也认为这是人们可以用于这种情况的东西。