J'essaie d'utiliser Angular avec une liste d'applications, et chacune est un lien pour voir une application plus en détail ( apps/app.id
):
<a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a>
Chaque fois que je clique sur l'un de ces liens, Chrome affiche l'URL comme
unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id
D'où vient le unsafe:
?
ng-href
dans ce cas plutôt que simplementhref
: docs.angularjs.org/api/ng/directive/ngHreffunction gotoURL(url) { $window.location.href = url; }
Réponses:
Vous devez ajouter explicitement des protocoles d'URL à la liste blanche d'Angular à l'aide d'une expression régulière. Seulement
http
,https
,ftp
etmailto
sont activés par défaut. Angular préfixera une URL non sur liste blancheunsafe:
lors de l'utilisation d'un protocole tel quechrome-extension:
.Un bon endroit pour ajouter le
chrome-extension:
protocole à la liste blanche serait dans le bloc de configuration de votre module:La même procédure s'applique également lorsque vous devez utiliser des protocoles tels que
file:
ettel:
.Veuillez consulter la documentation de l'API AngularJS $ compileProvider pour plus d'informations.
la source
$compileProvider.aHrefSanitizationWhitelist
/^\s*(https?|ftp|file):|data:image\//
, pour accéder au système de fichiers local pour une application empaquetée de chrome|filesystem:chrome-extension:
doit être ajouté à la fin de l'expression régulière.|blob:chrome-extension:
à la fin.$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|blob|ftp|mailto|chrome-extension):/);
Au cas où quelqu'un aurait également ce problème avec les images:
la source
Si vous avez juste besoin de courrier, tel et sms, utilisez ceci:
la source
Google Chrome a besoin de ses extensions pour coopérer
Content Security Policy (CSP)
.Vous devez modifier votre extension pour répondre aux exigences de
CSP
.https://developer.chrome.com/extensions/contentSecurityPolicy.html
https://developer.mozilla.org/en-US/docs/Security/CSP
En outre, angularJS a une
ngCsp
directive que vous devez utiliser.http://docs.angularjs.org/api/ng.directive:ngCsp
la source
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
Dois-je modifier le csp dans le manifeste?la source
Car
Angular 2+
vous pouvez utiliserDomSanitizer
labypassSecurityTrustResourceUrl
méthode de.la source