Подтвердить что ты не робот

$ sce.trustAsResourceUrl() глобально

Как я могу сделать что-то вроде этого: $sce.trustAsResourceUrl('URL_HERE');

В глобальном масштабе, как в главном приложении config() или run(), функционирует так, что будут работать любые iFrames, img src и т.д., которые имеют URL_HERE?

Документы довольно плохо объясняют это.

4b9b3361

Ответ 1

Я только что прочитал ваш комментарий из предыдущего ответа. Не уверен, что вы нашли решение. Кажется, вы ищете тип белого списка. Недавно я выяснил, что существует функция "белый список" для $sce.

Взято из AngularJS docs для $sceDelegateProvider:

angular.module('myApp', []).config(function($sceDelegateProvider) {
 $sceDelegateProvider.resourceUrlWhitelist([
   // Allow same origin resource loads.
   'self',
   // Allow loading from our assets domain.  Notice the difference between * and **.
   'http://srv*.assets.example.com/**']);
 })

С этим вы можете сделать строчную интерполяцию в iframe следующим образом:

<iframe ng-src="{{ 'http://srv1.assets.example.com/' + url_asset }}"></iframe>

Ответ 2

Вы можете использовать фильтр. Они доступны по всему миру.

angular.module('myApp')
  .filter('trustUrl', function ($sce) {
    return function(url) {
      return $sce.trustAsResourceUrl(url);
    };
  });
<img ng-src={{ imageHref | trustUrl }}">

Ответ 3

Мне также понравилось решение для фильтра; однако, это не сработало для меня, пока я не ввел $sce правильно...

app.filter('trustUrl', ['$sce', function ($sce) {
  return function(url) {
    return $sce.trustAsResourceUrl(url);
  };
}]);

Ответ 4

Я использую для своих видео, хранящихся в файловой системе:

app.config( [
    '$sceDelegateProvider',
    function($sceDelegateProvider)
    {
        $sceDelegateProvider.resourceUrlWhitelist(['self','filesystem:**']); 
    }
]);