J'ai essayé de configurer un formulaire de recherche où je peux injecter l'attribut d'action de formulaire.
Dans ma forme, j'ai
<form action="{{action}}">
Ensuite, dans mon contrôleur, j'ai
$scope.action = "http://www.somesite.com"
Cela me donne une erreur d'interpolation car elle n'a pas de "http:" non approuvé dans la chaîne. Comment puis-je contourner cela. Je sais que je peux utiliser ng-bind-html pour mettre html dans le dom mais je ne sais pas si je peux faire fonctionner cela avec un attribut uniquement.
Quelqu'un d'autre a-t-il eu ce problème? Je ne peux vraiment pas penser à un moyen de le contourner.
Merci
Si vous utilisez Angular.js 1.2 ou supérieur, vous avez accès au service Strict Contextual Escaping , $sce
.
SCE aide à écrire le code de manière à ce que (a) soit sécurisé par défaut et (b) rend l'audit des vulnérabilités de sécurité telles que XSS, clickjacking, etc. beaucoup plus facile.
Dans $ sce, vous pouvez passer une variable à $sce.trustAsUrl(value)
pour obtenir sa valeur d'origine. Donc, vous devriez pouvoir utiliser:
$scope.action = $sce.trustAsUrl("http://www.somesite.com");
Je suis d'accord avec la réponse du hooligan. Pour une raison quelconque, $ sce.trustAsURL ne semble pas fonctionner. Au lieu de cela, $ sce.trustAsResourceUrl ('') a fonctionné pour moi.