一尘不染

AngularJS在扩展页面中将URL更改为“不安全:”

angularjs

我正在尝试将Angular与一系列应用程序结合使用,并且每个链接都是一个链接,可用于更详细地查看应用程序(apps/app.id):

<a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a>

每次我点击其中一个链接时,Chrome都会将该网址显示为

unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id

哪里unsafe:来的?


阅读 240

收藏
2020-07-04

共1个答案

一尘不染

您需要使用正则表达式将URL协议显式添加到Angular的白名单中。只有httphttpsftpmailto默认启用。unsafe:使用诸如的协议时,Angular会将未列入白名单的URL
作为前缀chrome-extension:

chrome-extension:协议列入白名单的好地方是在模块的配置块中:

var app = angular.module( 'myApp', [] )
.config( [
    '$compileProvider',
    function( $compileProvider )
    {   
        $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension):/);
        // Angular before v1.2 uses $compileProvider.urlSanitizationWhitelist(...)
    }
]);

当需要使用诸如file:和的协议时,同样的步骤也适用tel:

请参阅AngularJS $ compileProvider
API文档
以获取更多信息。

2020-07-04