Saya mencoba membuat situs web yang dapat diunduh dan dijalankan secara lokal dengan meluncurkan file indeksnya.
Semua file bersifat lokal, tidak ada sumber daya yang digunakan online.
Ketika saya mencoba menggunakan plugin AJAXSLT untuk jQuery untuk memproses file XML dengan template XSL (dalam sub direktori), saya menerima kesalahan berikut:
XMLHttpRequest cannot load file:///C:/path/to/XSL%20Website/data/home.xml. Origin null is not allowed by Access-Control-Allow-Origin.
XMLHttpRequest cannot load file:///C:/path/to/XSL%20Website/assets/xsl/main.xsl. Origin null is not allowed by Access-Control-Allow-Origin.
File indeks yang mengajukan permintaan adalah file:///C:/path/to/XSL%20Website/index.html
saat file JavaScript yang digunakan disimpan file:///C:/path/to/XSL%20Website/assets/js/
.
Bagaimana saya bisa memperbaiki masalah ini?
Pada dasarnya satu-satunya cara untuk mengatasinya adalah dengan menjalankan server web di localhost dan melayani mereka dari sana.
Peramban tidak aman untuk mengizinkan permintaan ajax untuk mengakses file apa pun di komputer Anda, oleh karena itu sebagian besar browser tampaknya memperlakukan permintaan "file: //" karena tidak memiliki asal untuk tujuan " Kebijakan Asal yang Sama "
Memulai server web bisa sepele seperti
cd
memasuki direktori tempat file sedang berjalan:sumber
python -m http.server
.Berikut adalah applescript yang akan meluncurkan Chrome dengan sakelar --allow-file-access-from-file dinyalakan, untuk pengembang OSX / Chrome di luar sana:
sumber
open -a 'Google Chrome' --args --allow-file-access-from-files
.Solusi ini akan memungkinkan Anda memuat skrip lokal menggunakan jQuery.getScript (). Ini adalah pengaturan global tetapi Anda juga dapat mengatur opsi crossDomain berdasarkan permintaan.
sumber
Bagaimana dengan menggunakan fungsi FileReader javascript untuk membuka file lokal, yaitu:
Sekarang klik
Choose file
tombol dan browse ke filefile:///C:/path/to/XSL%20Website/data/home.xml
sumber
Peluncuran krom seperti begitu untuk memotong pembatasan ini:
open -a "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --args --allow-file-access-from-files
.Berasal dari komentar Josh Lee, tetapi saya harus menentukan jalur lengkap ke Google Chrome untuk menghindari pembukaan Google Chrome dari partisi Windows saya (di Parallels).
sumber
Cara saya hanya mengatasinya adalah tidak menggunakan XMLHTTPRequest sama sekali, tetapi sertakan data yang diperlukan dalam file javascript terpisah sebagai gantinya. (Dalam kasus saya, saya membutuhkan gumpalan SQLite biner untuk digunakan dengan https://github.com/kripken/sql.js/ )
Saya membuat file bernama
base64_data.js
(dan digunakanbtoa()
untuk mengkonversi data yang saya butuhkan dan memasukkannya ke dalam<div>
sehingga saya bisa menyalinnya).dan kemudian memasukkan data dalam html seperti javascript normal:
Saya membayangkan akan sepele untuk memodifikasi ini untuk membaca JSON, bahkan mungkin XML; Saya akan meninggalkan itu sebagai latihan untuk pembaca;)
sumber
Anda dapat mencoba menempatkan
'Access-Control-Allow-Origin':'*'
diresponse.writeHead(, {[here]})
.sumber
gunakan 'server web untuk aplikasi chrome'. (Anda benar-benar memilikinya di pc Anda, apakah Anda tahu atau tidak. Cari saja di cortana!). buka dan klik 'pilih file' pilih folder dengan file Anda di dalamnya. jangan benar-benar memilih file Anda. pilih folder file Anda lalu klik tautan di bawah tombol 'pilih folder'.
jika tidak membawa Anda ke file, lalu tambahkan nama file ke urs. seperti ini:
tautan ke server web untuk chrome: klik saya
sumber