Ich versuche, Angular mit einer Liste von Apps zu verwenden, und jede ist ein Link, um eine App detaillierter anzuzeigen ( apps/app.id
):
<a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a>
Jedes Mal, wenn ich auf einen dieser Links klicke, zeigt Chrome die URL als an
unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id
Woher kommt das unsafe:
?
ng-href
in diesem Fall nicht nur verwenden solltenhref
: docs.angularjs.org/api/ng/directive/ngHreffunction gotoURL(url) { $window.location.href = url; }
Antworten:
Sie müssen der Whitelist von Angular mithilfe eines regulären Ausdrucks explizit URL-Protokolle hinzufügen. Nur
http
,https
,ftp
undmailto
sind standardmäßig aktiviert. Angular stellt einer URL ohne Whitelistunsafe:
bei Verwendung eines Protokolls wie zchrome-extension:
.Ein guter Ort, um das
chrome-extension:
Protokoll auf die Whitelist zu setzen, ist der Konfigurationsblock Ihres Moduls:Das gleiche Verfahren gilt auch, wenn Sie Protokolle wie
file:
und verwenden müssentel:
.Weitere Informationen finden Sie in der AngularJS $ compileProvider-API-Dokumentation .
quelle
$compileProvider.aHrefSanitizationWhitelist
/^\s*(https?|ftp|file):|data:image\//
, um auf das lokale Dateisystem für eine Chrome-App zuzugreifen|filesystem:chrome-extension:
.|blob:chrome-extension:
am Ende hinzufügen .$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|blob|ftp|mailto|chrome-extension):/);
Falls jemand dieses Problem auch mit Bildern hat:
quelle
Wenn Sie nur Post, Tel und SMS benötigen, verwenden Sie diese:
quelle
Für die Zusammenarbeit mit Google Chrome sind die Erweiterungen erforderlich
Content Security Policy (CSP)
.Sie müssen Ihre Erweiterung ändern, um die Anforderungen von zu erfüllen
CSP
.https://developer.chrome.com/extensions/contentSecurityPolicy.html
https://developer.mozilla.org/en-US/docs/Security/CSP
Außerdem verfügt angleJS über eine
ngCsp
Direktive, die Sie verwenden müssen.http://docs.angularjs.org/api/ng.directive:ngCsp
quelle
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
Muss ich den csp im Manifest ändern?quelle
Für
Angular 2+
Sie verwenden könnenDomSanitizer
‚s -bypassSecurityTrustResourceUrl
Methode.quelle