programing

$sce.trustAsResourceUrl() 글로벌

starjava 2023. 2. 21. 23:21
반응형

$sce.trustAsResourceUrl() 글로벌

어떻게 하면 좋을까요?$sce.trustAsResourceUrl('URL_HERE');

메인 앱과 같이 글로벌하게config()또는run()iFrames, img src 등이 기능하도록 합니다.URL_HERE작동할까요?

의사들은 이것을 설명하는데 다소 서투르다.

필터를 사용할 수도 있습니다.이것들은 글로벌하게 이용할 수 있습니다.

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

방금 전 답변에서 보내주신 댓글을 읽었습니다.해결책을 찾았는지 아직 확실하지 않아요.화이트리스트 타입의 것을 찾고 있는 것 같습니다.$sce에 화이트리스트 기능이 있다는 것을 최근에 알았습니다.

앵귤러에서 찍다$sceDelegateProvider의 JS 문서:

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>

필터 솔루션도 마음에 들었습니다만, $sce를 제대로 삽입할 때까지 효과가 없었습니다.

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

파일 시스템에 저장된 비디오에 사용합니다.

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

언급URL : https://stackoverflow.com/questions/20049261/sce-trustasresourceurl-globally

반응형