1. ホーム
  2. javascript

[解決済み] AngularJS、拡張ページでURLを "unsafe: "に変更する。

2022-04-14 16:12:45

質問

Angularをアプリのリストで使おうとしているのですが、それぞれがアプリの詳細を見るためのリンクになっています( apps/app.id ):

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

これらのリンクをクリックするたびに、Chrome は URL を次のように表示します。

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

はどこにあるのでしょうか? unsafe: から来るのでしょうか?

解決方法は?

AngularのホワイトリストにURLプロトコルを正規表現で明示的に追加する必要があります。ただし http , https , ftpmailto はデフォルトで有効です。Angular はホワイトリストに載っていない URL の前に unsafe: などのプロトコルを使用する場合 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 ドキュメント をご覧ください。