Saya mencoba memuat model 3D ke Three.js JSONLoader
, dan model 3D itu berada di direktori yang sama dengan seluruh situs web.
Saya mendapatkan "Cross origin requests are only supported for HTTP."
kesalahan, tetapi saya tidak tahu apa penyebabnya dan bagaimana cara memperbaikinya.
Jawaban:
Bola kristal saya mengatakan bahwa Anda memuat model menggunakan salah satu
file://
atauC:/
, yang tetap setia pada pesan kesalahan karena tidakhttp://
Jadi Anda dapat menginstal server web di PC lokal Anda atau mengunggah model di tempat lain dan menggunakan
jsonp
dan mengubah url kehttp://example.com/path/to/model
Asal didefinisikan dalam RFC-6454 sebagai
Jadi meskipun file Anda berasal dari host yang sama (
localhost
), tetapi asalkan skemanya berbeda (http
/file
), mereka diperlakukan sebagai asal yang berbeda.sumber
file://
, tetapi saya tidak mengerti mengapa ini diizinkan. Yah, saya menginstal Lampp saya kira ...load('file://C:/users/user/supersecret.doc')
dan kemudian mengunggah konten ke server mereka menggunakan ajax dll.Sekadar eksplisit - Ya, kesalahannya adalah Anda tidak dapat mengarahkan browser Anda secara langsung
file://some/path/some.html
Berikut adalah beberapa opsi untuk memutar server web lokal dengan cepat agar browser Anda membuat file lokal
Python 2
Jika Anda memasang Python ...
Ubah direktori menjadi folder tempat file
some.html
atau file Anda ada menggunakan perintahcd /path/to/your/folder
Mulai server web Python menggunakan perintah
python -m SimpleHTTPServer
Ini akan memulai server web untuk menampung seluruh daftar direktori Anda di
http://localhost:8000
python -m SimpleHTTPServer 9000
memberi Anda tautan:http://localhost:9000
Pendekatan ini dibangun untuk setiap instalasi Python.
Python 3
Lakukan langkah yang sama, tetapi gunakan perintah berikut sebagai gantinya
python3 -m http.server
Node.js
Atau, jika Anda menuntut pengaturan yang lebih responsif dan sudah menggunakan nodejs ...
Instal
http-server
dengan mengetiknpm install -g http-server
Ubah ke direktori kerja Anda, tempat
some.html
tinggal AndaMulai server http Anda dengan menerbitkan
http-server -c-1
Ini memutar Node.js httpd yang menyajikan file dalam direktori Anda sebagai file statis yang dapat diakses
http://localhost:8080
Rubi
Jika bahasa pilihan Anda adalah Ruby ... para Dewa Ruby mengatakan ini juga berfungsi:
PHP
Tentu saja PHP juga memiliki solusinya.
sumber
$ python -m SimpleHTTPServer
, yang menghasilkan pesan:Serving HTTP on 0.0.0.0 port 8000 ...
Jika Anda salah mengeja nama modul, mis.$ python -m SimpleHttpServer
Anda akan mendapatkan pesan kesalahanNo module named SimpleHttpServer
Anda akan mendapatkan pesan kesalahan yang sama jika Anda memiliki python3 diinstal (v. python 2.7). Anda dapat memeriksa versi python menggunakan perintah:$ python --version
. Anda juga dapat menentukan port untuk didengarkan seperti ini:$ python -m SimpleHTTPServer 3333
$ cd ~/angular_projects/1app
, lalu$ python -m SimpleHTTPServer
. Di browser Anda, masukkan urlhttp://localhost:8000/index.html
. Anda juga dapat meminta file dalam subdirektori dari direktori di mana Anda memulai server, misalnyahttp://localhost:8000/subdir/hello.html
Di Chrome Anda dapat menggunakan bendera ini:
Baca lebih lanjut di sini.
sumber
--allow-file-access-from-files
). Ini berarti menggunakan Chrome untuk penelusuran web umum, dan menggunakan Chromium sebagai aplikasi default untuk file HTML.fetch()
masih menyangkal hal ini. Anda harus menggunakanXMLHttpRequest
beberapa caraBerlari ke hari ini.
Saya menulis beberapa kode yang terlihat seperti ini:
... tapi seharusnya terlihat seperti ini:
Satu-satunya perbedaan adalah kurangnya
http://
potongan kode kedua.Hanya ingin menempatkan itu di luar sana kalau-kalau ada orang lain dengan masalah yang sama.
sumber
Ubah saja url ke
http://localhost
alih-alihlocalhost
. Jika Anda membuka file html dari lokal, Anda harus membuat server lokal untuk melayani file html itu, cara paling sederhana adalah menggunakanWeb Server for Chrome
. Itu akan memperbaiki masalah.sumber
Web Server for Chrome
tautan aplikasi - sejauh ini merupakan solusi paling sederhana & paling bersih untuk pengaturan httpd sementara untuk Chrome IMODalam aplikasi Android - misalnya, untuk memungkinkan JavaScript memiliki akses ke aset melalui
file:///android_asset/
- gunakansetAllowFileAccessFromFileURLs(true)
pada apaWebSettings
yang Anda dapatkan dari menelepongetSettings()
di InternetWebView
.sumber
Gunakan
http://
atauhttps://
untuk membuat urlkesalahan :
localhost:8080
solusi :
http://localhost:8080
sumber
Cara tercepat untuk saya adalah: untuk pengguna windows menjalankan file Anda pada masalah Firefox diselesaikan, atau jika Anda ingin menggunakan cara termudah chrome bagi saya adalah menginstal Python 3 kemudian dari command prompt jalankan perintah
python -m http.server
kemudian pergi ke http: // localhost: 8000 / lalu arahkan ke file Andasumber
Saya akan mencantumkan 3 pendekatan berbeda untuk menyelesaikan masalah ini:
npm
paket yang sangat ringan : Instal live-server menggunakannpm install -g live-server
. Kemudian, buka direktori itu buka terminal dan ketiklive-server
dan tekan enter, halaman akan disajikan dilocalhost:8080
. BONUS: Ini juga mendukung reload panas secara default.target
ke"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
dan simpan. Kemudian gunakan Chrome buka halaman menggunakanctrl+o
. CATATAN: JANGAN gunakan jalan pintas ini untuk browsing biasa.sumber
Bagi mereka yang menggunakan Windows tanpa Python atau Node.js, masih ada solusi ringan: Mongoose .
Yang Anda lakukan adalah menyeret executable ke mana pun root server seharusnya, dan jalankan. Ikon akan muncul di bilah tugas dan itu akan menavigasi ke server di browser default.
Juga, Z-WAMP adalah WAMP portabel 100% yang berjalan dalam satu folder, sangat mengagumkan. Itu pilihan jika Anda memerlukan PHP dan server MySQL yang cepat.
sumber
Jika Anda menggunakan Mozilla Firefox, Ini akan berfungsi seperti yang diharapkan tanpa masalah;
PS Anehnya, IntenetExplorer_Edge bekerja dengan sangat baik !!!
sumber
Solusi mudah untuk siapa yang menggunakan Kode VS
Saya telah mendapatkan kesalahan ini untuk sementara waktu. Sebagian besar jawabannya berhasil. Tetapi saya menemukan solusi yang berbeda. Jika Anda tidak ingin berurusan dengan
node.js
atau solusi lain di sini dan Anda bekerja dengan file HTML (memanggil fungsi dari file js lain atau mengambil json api) cobalah menggunakan Live Server ekstensi .Ini memungkinkan Anda untuk membuka server langsung dengan mudah. Dan karena itu menciptakan
localhost
server, masalahnya teratasi. Anda cukup memulailocalhost
dengan membuka file HTML dan klik kanan pada editor dan klikOpen with Live Server
.Pada dasarnya memuat file menggunakan
http://localhost/index.html
bukan menggunakanfile://...
.EDIT
Tidak perlu memiliki
.html
file. Anda dapat memulai Server Langsung dengan pintasan.Semoga ini bisa membantu seseorang :)
sumber
Saya mendapatkan kesalahan ini saat memuat file HTML di browser yang menggunakan file json dari direktori lokal. Dalam kasus saya, saya dapat menyelesaikan ini dengan membuat server simpul sederhana yang memungkinkan server konten statis. Saya meninggalkan kode untuk ini di jawaban lain ini .
sumber
Saya sarankan Anda menggunakan mini-server untuk menjalankan aplikasi semacam ini di localhost (jika Anda tidak menggunakan server inbuilt).
Inilah salah satu yang sangat mudah untuk diatur dan dijalankan:
sumber
Saya menduga itu sudah disebutkan dalam beberapa jawaban, tapi saya akan sedikit memodifikasi ini untuk mendapatkan jawaban yang lengkap (lebih mudah ditemukan dan digunakan).
Pergi ke: https://nodejs.org/en/download/ . Instal nodejs.
Instal http-server dengan menjalankan perintah dari command prompt
npm install -g http-server
.Ubah ke direktori kerja Anda, di mana
index.html
/yoursome.html
berada.Mulai server http Anda dengan menjalankan perintah
http-server -c-1
Buka browser web ke
http://localhost:8080
atauhttp://localhost:8080/yoursome.html
- tergantung pada nama file html Anda.sumber
Itu hanya mengatakan bahwa aplikasi harus dijalankan di server web. Saya memiliki masalah yang sama dengan chrome, saya mulai kucing jantan dan memindahkan aplikasi saya di sana, dan itu berhasil.
sumber
er. Saya baru saja menemukan beberapa kata resmi "Mencoba memuat unbuilt, modul AMD jarak jauh yang menggunakan plugin dojo / teks akan gagal karena pembatasan keamanan lintas-asal. (Versi dibangun dari modul AMD tidak terpengaruh karena panggilan ke dojo / teks dihilangkan oleh sistem build.) " https://dojotoolkit.org/documentation/tutorials/1.10/cdn/
sumber
Salah satu cara kerjanya memuat file lokal adalah menggunakannya di dalam folder proyek alih-alih di luar folder proyek Anda. Buat satu folder di bawah file contoh proyek Anda mirip dengan cara kami membuat untuk gambar dan ganti bagian di mana menggunakan path lokal lengkap selain path proyek dan gunakan url relatif file di bawah folder proyek. Ini berhasil untuk saya
sumber
Untuk semua yang Anda aktifkan
MacOS
... siapkan LaunchAgent sederhana untuk mengaktifkan kapabilitas glamor ini di salinan Chrome Anda sendiri ...Simpan
plist
, beri nama apa pun (launch.chrome.dev.mode.plist
, misalnya)~/Library/LaunchAgents
dengan konten yang mirip dengan ...Itu harus diluncurkan saat startup .. tetapi Anda dapat memaksanya untuk melakukannya kapan saja dengan perintah terminal
launchctl load -w ~/Library/LaunchAgents/launch.chrome.dev.mode.plist
TADA! 😎 💁🏻 🙊 🙏🏾
sumber
Mulai server aplikasi, dan Anda harus dapat mengakses file dari localhost
sumber
Tidak mungkin memuat file lokal statis (mis: svg) tanpa server. Jika Anda memiliki NPM / BENANG diinstal di mesin Anda, Anda dapat mengatur server http sederhana menggunakan " http-server "
sumber
Banyak masalah untuk ini, dengan masalah saya hilang '/' contoh: jquery-1.10.2.js: 8720 XMLHttpRequest tidak dapat memuat http: // localhost: xxxProduct / getList_tagLabels / Ini harus: http: // localhost: xxx / Product / getList_tagLabels /
Saya harap bantuan ini untuk yang memenuhi masalah ini.
sumber
Saya juga dapat membuat kembali pesan kesalahan ini ketika menggunakan tag anchor dengan href berikut:
Dalam kasus saya, sebuah tag digunakan untuk mendapatkan 'Kursor Pointer' dan acara tersebut sebenarnya dikendalikan oleh beberapa jQuery pada acara klik. Saya menghapus href dan menambahkan kelas yang berlaku:
sumber
Untuk pengguna Linux Python:
sumber
google-chrome --allow-file-access-from-files <url>
tidak bekerja dan lebih ringkas?Jika Anda bersikeras menjalankan
.html
file secara lokal dan tidak menyajikannya dengan server web, Anda dapat mencegah permintaan lintas asal itu terjadi di tempat pertama dengan membuat sumber daya yang bermasalah tersedia secara inline.Saya punya masalah ini ketika mencoba melayani
.js
file melaluifile://
. Solusi saya adalah memperbarui skrip build saya untuk mengganti<script src="...">
tag<script>...</script>
. Ini agulp
pendekatan untuk melakukan itu:1. lari
npm install --save-dev
ke paketgulp
,gulp-inline
dandel
.2. Setelah membuat
gulpfile.js
ke direktori root, tambahkan kode berikut (cukup ubah jalur file untuk apa pun yang cocok untuk Anda):gulp bundle-for-local
atau perbarui skrip build Anda untuk menjalankannya secara otomatis.Anda dapat melihat masalah dan solusi terperinci untuk kasus saya di sini .
sumber
Cordova mencapai ini. Saya masih tidak tahu bagaimana cordova melakukannya. Bahkan tidak melalui shouldInterceptRequest.
Kemudian saya menemukan bahwa kunci untuk memuat file apa pun dari lokal adalah: myWebView.getSettings (). SetAllowUniversalAccessFromFileURLs (true);
Dan ketika Anda ingin mengakses sumber daya http apa pun, tampilan web akan melakukan pengecekan dengan metode OPSI, yang Anda dapat memberikan akses melalui WebViewClient.shouldInterceptRequest dengan mengembalikan respons, dan untuk metode GET / POST berikut, Anda bisa mengembalikan nol.
sumber
pertama tutup semua instance dari chrome.
setelah itu ikuti ini.
Saya menggunakan perintah ini di mac.
"/ Aplikasi / Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-file
Untuk windows:
Bagaimana cara meluncurkan html menggunakan Chrome pada mode "--allow-file-access-from-file"?
sumber
Mengalami hal ini ketika saya mengunduh halaman untuk tampilan offline.
Saya hanya harus menghapus atribut
integrity="*****"
dancrossorigin="anonymous"
dari semua<link>
dan<script>
tagsumber