Javascript 在AngularJS中禁用严格上下文转义(SCE)
我正在尝试禁用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); }); 这是
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)有什么想法吗?