Я пытаюсь использовать Angular со списком приложений, и каждое из них является ссылкой, чтобы увидеть приложение более подробно ( apps/app.id
):
<a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a>
Каждый раз, когда я нажимаю на одну из этих ссылок, Chrome отображает URL-адрес как
unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id
Откуда unsafe:
взялся?
ng-href
в этом случае, а не простоhref
: docs.angularjs.org/api/ng/directive/ngHreffunction gotoURL(url) { $window.location.href = url; }
Ответы:
Вам необходимо явно добавить URL-протоколы в белый список Angular с помощью регулярного выражения. Только
http
,https
,ftp
иmailto
включены по умолчанию. Angular будет использовать префикс URL-адреса без белого спискаunsafe:
при использовании протокола, такого какchrome-extension:
.Хорошее место для внесения в белый список
chrome-extension:
протокола можно найти в блоке конфигурации вашего модуля:Та же самая процедура также применяется, когда вам нужно использовать протоколы, такие как
file:
иtel:
.Пожалуйста, обратитесь к документации AngularJS $ compileProvider API для получения дополнительной информации.
источник
$compileProvider.aHrefSanitizationWhitelist
/^\s*(https?|ftp|file):|data:image\//
для доступа к локальной файловой системе для упакованного приложения Chrome|filesystem:chrome-extension:
в конце регулярного выражения.|blob:chrome-extension:
в конец.$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|blob|ftp|mailto|chrome-extension):/);
В случае, если у кого-то есть эта проблема с изображениями, а также:
источник
Если вам просто нужна почта, тел и смс используйте это:
источник
Для работы Google Chrome требуются его расширения
Content Security Policy (CSP)
.Вы должны изменить свое расширение, чтобы выполнить требования
CSP
.https://developer.chrome.com/extensions/contentSecurityPolicy.html
https://developer.mozilla.org/en-US/docs/Security/CSP
Кроме того, angularJS имеет
ngCsp
директиву, которую вам нужно использовать.http://docs.angularjs.org/api/ng.directive:ngCsp
источник
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
мне нужно изменить csp в манифесте?источник
Для
Angular 2+
Вы можете использоватьDomSanitizer
«SbypassSecurityTrustResourceUrl
метод.источник