我正在尝试在AngularJS中禁用 SCE。 根据{{3}},这是需要做的事情:
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>'
};
}
]);
我仍然收到错误:
[$ interpolate:noconcat]插值时出错:/ static / movies / {{ $ ctrl.movie.id}} / sample / sample.mp4严格的上下文转义 禁止在a时连接多个表达式的插值 值得信赖。
导致错误的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>
我觉得我错过了一些简单的语法错误。请帮忙!
答案 0 :(得分:1)
首先,您应该从doc:
进行检查我可以完全禁用SCE吗?
是的,你可以。但是,强烈建议不要这样做。 SCE为您提供了很多安全优势,只需很少的编码开销。采用SCE禁用的应用程序并且要么自己保护它或者在稍后阶段启用SCE将会困难得多。如果您在引入SCE之前已经编写了大量现有代码并且一次将它们迁移到模块中,那么禁用SCE可能是有意义的。
嗯,在这种情况下,我认为您不需要禁用 SCE ,例如,如果您使用ngBindHtml
呈现某些HTML,AngularJS会抛出错误除非分配给ngBindHtml
的范围变量包含$sce.trustAsHtml
。
但是,让我们回到错误,一个人说不出口:
插值时出错:/ static / movies / {{$ ctrl.movie.id }} /样品/ sample.mp4
你只需要以正确的方式连接它,就像这样:
<source ng-src="{{'/static/movies/' + $ctrl.movie.id + '/sample/sample.mp4'}}">
希望它有所帮助!!
答案 1 :(得分:0)
我找到了this。显然,它不是SCE问题。关于Angular如何与Html5 Video&#34; source:tag相关的问题。
如果只有一个视频源,则HTML看起来像这样:
<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>
而不是:
<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>
解决问题。
当然,@ developer033是正确的,我的初始连接是错误的。