我一直在尝试设置一个搜索表单,我可以在其中注入表单操作属性。
我的表格中有
<form action="{{action}}">
然后在我的控制器中我有
$scope.action = "http://www.somesite.com"
这给了我一个插值错误,因为它在字符串中不受信任“http:”。我该如何解决这个问题。我知道我可以使用ng-bind-html将html放在dom中,但我不知道我是否可以使用属性来处理它。
是否还有其他人遇到此问题。我真的想不出办法解决它。
由于
答案 0 :(得分:13)
我同意流氓的回答。出于某种原因,$ sce.trustAsURL似乎不起作用。相反,$ sce.trustAsResourceUrl(&#39;&#39;)确实对我有效。
答案 1 :(得分:4)
如果您使用的是Angular.js 1.2或更高版本,则可以访问Strict Contextual Escaping Service,$sce
。
在$ sce中,您可以将变量传递给SCE协助编写代码的方式:(a)默认是安全的;(b)审核安全漏洞,如XSS,点击劫持等等。更容易。
$sce.trustAsUrl(value)
以获取其原始值。所以你应能够使用:
$scope.action = $sce.trustAsUrl("http://www.somesite.com");