Estou tentando usar o Angular com uma lista de aplicativos, e cada um é um link para ver um aplicativo em mais detalhes ( apps/app.id
):
<a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a>
Sempre que clico em um desses links, o Chrome mostra o URL como
unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id
De onde unsafe:
vem isso?
ng-href
neste caso, ao invés de apenashref
: docs.angularjs.org/api/ng/directive/ngHreffunction gotoURL(url) { $window.location.href = url; }
Respostas:
Você precisa adicionar explicitamente protocolos de URL à lista de permissões do Angular usando uma expressão regular. Apenas
http
,https
,ftp
emailto
são ativadas por padrão. O Angular prefixará um URL que não esteja na lista de permissõesunsafe:
ao usar um protocolo comochrome-extension:
.Um bom lugar para colocar na lista branca o
chrome-extension:
protocolo seria no bloco de configuração do seu módulo:O mesmo procedimento também se aplica quando você precisa usar protocolos como
file:
etel:
.Consulte a documentação da API AngularJS $ compileProvider para obter mais informações.
fonte
$compileProvider.aHrefSanitizationWhitelist
/^\s*(https?|ftp|file):|data:image\//
, para acessar o sistema de arquivos local de um aplicativo compactado no Chrome, ele|filesystem:chrome-extension:
deve ser adicionado ao final da regex.|blob:chrome-extension:
ao final.$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|blob|ftp|mailto|chrome-extension):/);
Caso alguém também tenha esse problema com imagens:
fonte
Se você precisar apenas de correio, tel e sms, use o seguinte:
fonte
O Google Chrome exige que suas extensões cooperem
Content Security Policy (CSP)
.Você precisa modificar sua extensão para atender aos requisitos de
CSP
.https://developer.chrome.com/extensions/contentSecurityPolicy.html
https://developer.mozilla.org/en-US/docs/Security/CSP
Além disso, angularJS possui uma
ngCsp
diretiva que você precisa usar.http://docs.angularjs.org/api/ng.directive:ngCsp
fonte
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
preciso alterar o csp no manifesto?fonte
Pois
Angular 2+
você pode usarDomSanitizer
obypassSecurityTrustResourceUrl
método.fonte