2014-08-28 61 views
7

我一直試圖設置一個搜索表單,我可以注入表單動作屬性。基於範圍變量的角度集表單動作

在我的表單中我有

<form action="{{action}}"> 

然後在我的控制器我有

$scope.action = "http://www.somesite.com" 

這給了我一個插值誤差,因爲它有不可信的「http:」對的字符串中。我如何解決這個問題。我知道我可以使用ng-bind-html將html放入dom中,但我不知道是否可以只使用屬性。

是否有其他人有此問題。我真的不能想辦法解決這個問題。

感謝

回答

4

如果您正在使用Angular.js 1.2或以上,你可以訪問Strict Contextual Escaping Service$sce

SCE協助編寫代碼,使得(a)默認安全,(b)更容易對諸如XSS,clickjacking等安全漏洞進行審計。

在$ sce中,您可以將一個變量傳遞給$sce.trustAsUrl(value)以獲取它的原始值。所以,你應該可以使用:

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

+0

感謝您的回覆。它沒有解決它在我的應用程序,但我只是在這裏http://jsfiddle.net/7v2mz24v/測試相同的概念,由於某種原因,我不需要做任何的,它工作正常。我看不出爲什麼在我的其他應用程序中出現問題。 – hooligan 2014-08-30 01:11:52

+0

嗯所以,因爲你在你的問題中發佈的代碼在小提琴中正常工作,它不是代碼問題,更可能是你正在使用的angular.js版本或其他影響它的程序的問題。需要更多代碼來評估問題。 – Claies 2014-08-30 08:44:05

+3

管理得到它的工作,我不知道它爲什麼在小提琴中工作,我必須使用$ sce.trustAsResourceUrl()將它傳遞給表單操作。感謝$ sce的提示。 – hooligan 2014-08-31 01:29:32

11

我同意流氓的答案。出於某種原因,$ sce.trustAsURL似乎不起作用。相反,$ sce.trustAsResourceUrl('')確實爲我工作。

+1

絕對看起來是信任AsResourceUrl在角1.4.7 – captainclam 2015-10-14 00:41:10