基于范围变量的角度设置表单操作

hoo*_*gan 8 javascript angularjs

我一直在尝试设置一个搜索表单,我可以在其中注入表单操作属性.

以我的形式,我有

<form action="{{action}}">
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中我有

$scope.action = "http://www.somesite.com"
Run Code Online (Sandbox Code Playgroud)

这给了我一个插值错误,因为它在字符串中有不受信任的"http:".我该如何解决这个问题.我知道我可以使用ng-bind-html将html放在dom中,但我不知道我是否可以只使用属性.

其他人遇到过这个问题吗.我真的想不出办法解决它.

谢谢

use*_*791 14

我同意流氓的回答.出于某种原因,$ sce.trustAsURL似乎不起作用.相反,$ sce.trustAsResourceUrl('')确实适合我.


Cla*_*ies 5

如果您使用的是 Angular.js 1.2 或更高版本,则可以访问Strict Contextual Escape Service , $sce

SCE 以 (a) 默认情况下是安全的方式帮助编写代码,并且 (b) 使对安全漏洞(例如 XSS、点击劫持等)的审计变得更加容易。

在 $sce 中,您可以传递一个变量$sce.trustAsUrl(value)来获取它的原始值。所以你应该能够使用:

$scope.action = $sce.trustAsUrl("http://www.somesite.com");

  • 设法让它工作,我不知道它为什么在小提琴中工作,我必须使用 $sce.trustAsResourceUrl() 将它传递给表单操作。感谢您提供有关 $sce 内容的提示。 (4认同)