Menggunakan Angular dan Phonegap, saya mencoba memuat video yang ada di server jarak jauh tetapi menemukan masalah. Di JSON saya, URL dimasukkan sebagai URL HTTP biasa.
"src" : "http://www.somesite.com/myvideo.mp4"
Template video saya
<video controls poster="img/poster.png">
<source ng-src="{{object.src}}" type="video/mp4"/>
</video>
Semua data saya yang lain dimuat tetapi ketika saya melihat konsol saya, saya mendapatkan kesalahan ini:
Error: [$interpolate:interr] Can't interpolate: {{object.src}}
Error: [$sce:insecurl] Blocked loading resource from url not allowed by $sceDelegate policy. URL
Saya mencoba menambahkan $compileProvider
konfigurasi config saya tetapi tidak menyelesaikan masalah saya.
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);
Saya melihat posting ini tentang masalah lintas domain tetapi saya tidak yakin bagaimana menyelesaikan ini atau ke arah mana saya harus masuk. Ada ide? Bantuan apa pun dihargai
javascript
angularjs
cordova
mhartington
sumber
sumber
config.xml
file corodva Anda ?Jawaban:
Ini adalah satu-satunya solusi yang bekerja untuk saya:
Kemudian di iframe:
http://plnkr.co/edit/tYq22VjwB10WmytQO9Pb?p=preview
sumber
Solusi sederhana lain adalah membuat filter:
Kemudian tentukan filter di
ng-src
:sumber
Daftar putih sumber daya dengan $ sceDelegateProvider
Ini disebabkan oleh kebijakan keamanan baru yang diberlakukan di Angular 1.2. Itu membuat XSS lebih sulit dengan mencegah peretas keluar dari panggilan (yaitu membuat permintaan ke URL asing, berpotensi mengandung muatan).
Untuk menyiasatinya dengan benar, Anda perlu memasukkan daftar putih domain yang ingin Anda izinkan, seperti ini:
Contoh ini diambil dari dokumentasi yang dapat Anda baca di sini:
https://docs.angularjs.org/api/ng/provider/$sceDelegateProvider
Pastikan untuk memasukkan ngSanitize dalam aplikasi Anda untuk membuat ini berfungsi.
Menonaktifkan fitur
Jika Anda ingin mematikan fitur yang bermanfaat ini, dan Anda yakin data Anda aman, Anda bisa mengizinkan **, seperti:
sumber
resourceUrlWhitelist
entah bagaimana tidak bekerja untuk Anda, periksa apakah Anda tidak memiliki garis miring ganda setelah nama domain (mudah untuk ini terjadi ketika menggabungkan hal-hal dari variabel dan mereka berdua memiliki garis miring)Punya masalah yang sama di sini. Saya harus mengikat tautan Youtube. Apa yang berhasil bagi saya, sebagai solusi global , adalah menambahkan yang berikut ke konfigurasi saya:
Menambahkan 'diri' di sana penting - jika tidak akan gagal mengikat ke URL apa pun. Dari dokumen sudut
Dengan itu, saya sekarang dapat mengikat langsung ke tautan Youtube apa pun.
Anda jelas harus menyesuaikan regex dengan kebutuhan Anda. Semoga ini bisa membantu!
sumber
Solusi terbaik dan mudah untuk menyelesaikan masalah ini adalah meneruskan data Anda dari fungsi ini di controller.
Di halaman html
sumber
Saya mengalami masalah yang sama menggunakan Videogular. Saya mendapatkan yang berikut saat menggunakan ng-src:
Saya memperbaiki masalah dengan menulis arahan dasar:
Html:
sumber
Jika ada yang mencari solusi TypeScript:
File .ts (ubah variabel jika berlaku):
Html:
sumber
Berdasarkan pesan kesalahan, masalah Anda tampaknya terkait dengan interpolasi (biasanya ekspresi Anda
{{}}
), bukan masalah lintas-domain. Pada dasarnyang-src="{{object.src}}"
menyebalkan.ng-src
dirancang denganimg
tag dalam pikiran IMO. Mungkin tidak cocok untuk<source>
. Lihat http://docs.angularjs.org/api/ng.directive:ngSrcJika Anda menyatakan
<source src="somesite.com/myvideo.mp4"; type="video/mp4"/>
, itu akan berfungsi, bukan? (perhatikan bahwa saya menghapusng-src
mendukungsrc
). Jika tidak harus diperbaiki terlebih dahulu.Kemudian memastikan bahwa
{{object.src}}
pengembalian nilai yang diharapkan ( di luar dari<video>
):Jika mengembalikan nilai yang diharapkan, pernyataan berikut harus berfungsi:
sumber
ng-src
rusak (tidak rusak). Ini berkaitan dengan kebijakan keamanan AngularJS: docs.angularjs.org/api/ng/service/$sceSaya memiliki kesalahan ini dalam pengujian , arahan
templateUrl
tidak dipercaya, tetapi hanya untuk spec, jadi saya menambahkan direktori templat:Direktori utama saya adalah
app
.sumber