私はAngularと$sce
をプロジェクトに使ってHTMLの特殊文字を表示し、ビデオプレーヤーのデータベース内のビデオファイルへのリンクを作成しています。しかし、私は$sce
を入手して、HTMLオーディオプレーヤーを同じデータベースのオーディオファイルに接続することはできません。私は脱出する必要があります!
このHTML作品:
<audio controls ng-src="https://mydatabase.com/aa6df923">
これは、プロジェクトのHTMLです:
<audio controls ng-src="{{audioSource}}">
これは動作しません:
$scope.audioSource = "https://mydatabase.com/aa6df923";
また、これは動作しません。
app.controller('MyController', function($scope, $sce) {
$scope.audioSource = $sce.trustAsResourceUrl("https://mydatabase.com/aa6df923");
});
これは動作しないかん:
app.controller('MyController', function($scope, $sce) {
$scope.audioSource = $sce.trustAsResourceUrl("https://mydatabase.com/aa6df923");
$scope.$apply();
});
ない、この1次のいずれか
$scope.audioSource = "../audio/myFile.mp3";
そして、最後に、このフィルタは、HTMLの特殊文字をエスケープするために動作しますが、オーディオをリンクするために動作しませんがファイル:
<audio controls ng-src="{{audioSource | trustAsHtml}}">
app.filter('trustAsHtml', [$sce', function($sce) {
return function(html) {
return $sce.trustAsHtml(html);
};
}]);
何が欠けていますか?
小文字のホスト名 - 'https:// mydatabase.com/aa6df923'で試しましたか? '$ sceDelegateProvider'を試して、あなたの' .config() 'でリソースURLをホワイトリストに登録することもできます。 – doublesharp
私はそのURLを作りました。実際のURLはすべて小文字です。同じデータベースが動画を動画プレーヤーに提供するため、ホワイトリストを作成する必要はありません。 –
一致するパターンのすべてのコンテンツがリソースとして有効になるように、['$ sceDelegateProvider'](https://docs.angularjs.org/api/ng/provider/$sceDelegateProvider)を使用してドメインを「ホワイトリストに登録」できますURL。 '$ sceDelegateProvider.resourceUrlWhitelist(['self'、 'https://mydatabase.com/**']);'あなたの 'app.config()'のように見えます。 – doublesharp