3

ngBindHtml用来显示来自(内部)CMS 的一些 HTML:

<span ng-bind-html="cmsHtml"></span>

HTML 包含一个带有id属性的链接:

"<a id='fsgPdfLink' href='http://blah/download.pdf' target='_blank'>Click here to download the PDF</a>"

但是,我注意到 id 属性在写入页面链接之前被 angular 删除了,所以渲染的只是:

<a href='http://blah/download.pdf' target='_blank'>Click here to download the PDF</a>

查看 ngSanitize 模块的源代码,似乎由于某种原因 id 属性不在有效属性列表中:

https://github.com/angular/angular.js/blob/master/src/ngSanitize/sanitize.js#L206

  1. 不允许 id 属性的原因是什么?是否存在安全风险?
  2. 如果可能的话,我真的很想继续使用 ngBindHtml。是否有可以将安全标签添加到消毒剂列表的 API?还是我必须自己编辑源才能添加此标签?
4

1 回答 1

1

为了部分回答我自己的问题,似乎没有 API 可以更改内置白名单,如本公开问题所述:

https://github.com/angular/angular.js/issues/5900

于 2014-04-10T06:33:26.287 回答