angularjs – Angular 1.2:ng-bind-html删除img上的src属性
我在客户端使用Angular(1.2 RC2)开发CMS驱动的网站.由于内容来自CMS,我不幸被迫在
JSON字符串中使用接收HTML.大多数HTML都被注入并渲染得很好,但是图像标签的src被剥离了.从我读到的src应该以“unsafe:”为前缀,如果这是Angular中的XSS安全问题,则不会完全删除..但我可能会弄错.
我已经在这个问题上待了一段时间,感觉我已经尝试了从合理到彻头彻尾的愚蠢的一切.将我的CMS网址列入白名单,将所有内容列入白名单,禁用$sce,强制html通过$sce.trustAsHtml()并且好……到目前为止,没有运气.由于该网站是CMS驱动的,我不幸的是不能创造一个掠夺者/小提琴,但我希望一个善良的灵魂无论如何都会尝试帮助. 更新:忘记提到我也尝试过ng-src,效果相同. 浏览器看到的HTML(slide.body的内容) <div class="row"> <div class="col-md-6 visible-md visible-lg"> <img alt="none" class="img-responsive"> </div> <div class="col-xs-12 col-md-6"> <div class="itx-article-header"> <h1>Sulvat Quis 1</h1> <h2>– Nullam dictum ac enim</h2> </div> <p>Proin quis justo vel felis varius sodales sit amet ut diam.</p> </div> </div> JADE(HTML) .my-carousel(ng-controller='CarouselCtrl') carousel(interval='myInterval') slide(ng-repeat='slide in slides',active='slide.active') .my-carousel-item(ng-bind-html='slide.body') 角度控制器 .controller('CarouselCtrl',['$sce','Article','$scope',function($sce,Article,$scope) { $scope.myInterval = -1; $scope.slides = Article.query( {category: 'carousel'},function(data){ for (var i = 0; i < data.length; i++) { $scope.slides[i].body = $sce.trustAsHtml(data[i].body); } },function() { // Fail }); }]) 示例JSON响应(幻灯片) { "cmarId": 16,"corp": { "corpId": 2,"guiSelected": false },"createdAt": "Sep 27,2013","articleTag": "slide-1","headline": "Slide 1","highlighted": false,"body": " }
你在这里遗失的作品是通过$sce.trustAsResourceURL();来信任图片网址.有关文档,请参见
here.
编辑:此外,它似乎你没有将ng-src值包装在引号中(以及它作为HTML属性所需的引号).这不起作用 – ng-src期望一个javascript字符串作为表达式的最终结果,并且你为它提供了一个无效的javascript文字. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |