Javascript 在AngularJS中禁用严格上下文转义(SCE)

Javascript 在AngularJS中禁用严格上下文转义(SCE),javascript,angularjs,syntax,angularjs-config,Javascript,Angularjs,Syntax,Angularjs Config,我正在尝试禁用AngularJS中的SCE。 根据报告,这是需要做的: angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) { // Completely disable SCE. For demonstration purposes only! // Do not use in new projects. $sceProvider.enabled(false); }); 这是

我正在尝试禁用AngularJS中的SCE。 根据报告,这是需要做的:

angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {
  // Completely disable SCE.  For demonstration purposes only!
  // Do not use in new projects.
  $sceProvider.enabled(false);
});
这是我的app.config.js:

angular.module('yapoApp').config(['$sceProvider', '$locationProvider', '$routeProvider',  '$httpProvider',
    function config($sceProvider, $locationProvider, $routeProvider,  $httpProvider) {

        // disable SCE completely (https://docs.angularjs.org/api/ng/service/$sce)
        $sceProvider.enabled(false);

        $locationProvider.hashPrefix('!');

        $routeProvider.when('/actors', {
            template: '<actor-list></actor-list>'
        }).when('/actors/:actorId', {
            template: '<actor-detail></actor-detail>'
        }).when('/movies/', {
            template: '<movie-list></movie-list>'
        }).when('/movies/:movieId', {
            template: '<movie-detail></movie-detail>'
        }).otherwise('/'), {
            template: '<br><br><br><br><h1> This is temp index</h1>'

        };


    }

]);
angular.module('yapoApp').config(['$sceProvider','$locationProvider','$routeProvider','$httpProvider',
函数配置($sceProvider、$locationProvider、$routeProvider、$httpProvider){
//完全禁用SCE(https://docs.angularjs.org/api/ng/service/$sce)
$sceProvider.enabled(false);
$locationProvider.hashPrefix(“!”);
$routeProvider.when(“/actors”{
模板:“”
}).when(“/actors/:actorId”{
模板:“”
}).when(“/movies/”{
模板:“”
}).when(“/movies/:movieId”{
模板:“”
})。否则(“/”){
模板:“


这是临时索引” }; } ]);
但我仍然得到一个错误:

[$interpolate:noconcat]插值时出错:/static/movies/{{ $ctrl.movie.id}/sample/sample.mp4严格上下文转义 当 信任值是必需的

导致错误的html模板:

 <video width="{{ $ctrl.videoWidth }}px" controls>
        <source ng-src="/static/movies/{{ $ctrl.movie.id }}/sample/sample.mp4">

        Your browser does not support the video tag.
    </video>

您的浏览器不支持视频标记。

我觉得我遗漏了一些简单的语法错误。请帮忙

首先,您应该检查以下内容:

我可以完全禁用SCE吗? 是的,你可以。然而,这是强烈劝阻的。SCE以较小的编码开销为您提供了许多安全优势。使用禁用SCE的应用程序并自己保护它或在稍后阶段启用SCE将更加困难。如果您在引入SCE之前编写了大量现有代码,并且每次将它们迁移到一个模块,那么禁用SCE可能是有意义的

嗯,我认为在这种情况下不需要禁用SCE,而且,例如,如果使用
ngBindHtml
呈现一些HTML,AngularJS将抛出错误,除非分配给
ngBindHtml
的范围变量用
$SCE.trustAsHtml
包装

但是,让我们回到错误,这是一个不言自明的错误:

插值时出错:/static/movies/{{$ctrl.movie.id }}/sample/sample.mp4

您只需要以正确的方式连接它,如下所示:

<source ng-src="{{'/static/movies/' + $ctrl.movie.id + '/sample/sample.mp4'}}">
<video src="ng-src="{{'/static/movies/' + $ctrl.movie.id +  '/sample/sample.mp4'}}" width="{{ $ctrl.videoWidth }}px" controls>    
        Your browser does not support the video tag.
</video>

希望能有帮助

我找到了。显然,这不是SCE的问题。这是Angular如何与Html5视频相处的问题

如果只有一个视频源,则HTML如下所示:

<source ng-src="{{'/static/movies/' + $ctrl.movie.id + '/sample/sample.mp4'}}">
<video src="ng-src="{{'/static/movies/' + $ctrl.movie.id +  '/sample/sample.mp4'}}" width="{{ $ctrl.videoWidth }}px" controls>    
        Your browser does not support the video tag.
</video>

谢谢,但由于某些原因,这不起作用。“{{'/static/movies/'+$ctrl.movie.id+'/sample/sample.mp4'}正在尝试在/static/movies//sample/sample.mp4中查找sample.mp4。在源文件之外,它工作正常(Outputs/static/movies/12/sample/sample.mp4)有什么想法吗?