Saya mencoba menggunakan Angular dengan daftar aplikasi, dan masing-masing adalah tautan untuk melihat aplikasi lebih detail ( apps/app.id
):
<a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a>
Setiap kali saya mengklik salah satu tautan ini, Chrome menampilkan URL sebagai
unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id
Dari mana datangnya unsafe:
?
ng-href
dalam kasus ini daripada hanyahref
: docs.angularjs.org/api/ng/directive/ngHreffunction gotoURL(url) { $window.location.href = url; }
Jawaban:
Anda perlu menambahkan protokol URL secara eksplisit ke daftar putih Angular menggunakan ekspresi reguler. Hanya
http
,https
,ftp
danmailto
diaktifkan secara default. Angular akan mengawali awalan URL yang tidak masuk daftar putihunsafe:
ketika menggunakan protokol sepertichrome-extension:
.Tempat yang baik untuk membuat daftar putih
chrome-extension:
protokol adalah di blok konfigurasi modul Anda:Prosedur yang sama juga berlaku ketika Anda perlu menggunakan protokol seperti
file:
dantel:
.Silakan lihat dokumentasi API $ compileProvider AngularJS untuk info lebih lanjut.
sumber
$compileProvider.aHrefSanitizationWhitelist
/^\s*(https?|ftp|file):|data:image\//
, untuk mengakses sistem file lokal untuk aplikasi yang dikemas dengan chrome|filesystem:chrome-extension:
harus ditambahkan ke akhir regex.|blob:chrome-extension:
sampai akhir.$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|blob|ftp|mailto|chrome-extension):/);
Dalam hal siapa pun memiliki masalah dengan gambar ini, juga:
sumber
Jika Anda hanya membutuhkan surat, telp dan sms gunakan ini:
sumber
Google Chrome memerlukan ekstensi untuk bekerja sama dengan
Content Security Policy (CSP)
.Anda perlu mengubah ekstensi Anda untuk memenuhi persyaratan
CSP
.https://developer.chrome.com/extensions/contentSecurityPolicy.html
https://developer.mozilla.org/en-US/docs/Security/CSP
Juga, angularJS memiliki
ngCsp
arahan yang perlu Anda gunakan.http://docs.angularjs.org/api/ng.directive:ngCsp
sumber
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'",
Apakah saya perlu mengubah csp di manifes?sumber
Untuk
Angular 2+
Anda dapat menggunakanDomSanitizer
'sbypassSecurityTrustResourceUrl
metode.sumber