Saya memiliki tiga file aplikasi js sudut yang sangat sederhana
index.html
<!DOCTYPE html>
<html ng-app="gemStore">
<head>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js'></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body ng-controller="StoreController as store">
<div class="list-group-item" ng-repeat="product in store.products">
<h3>{{product.name}} <em class="pull-right">{{product.price | currency}}</em></h3>
</div>
<product-color></product-color>
</body>
</html>
product-color.html
<div class="list-group-item">
<h3>Hello <em class="pull-right">Brother</em></h3>
</div>
app.js
(function() {
var app = angular.module('gemStore', []);
app.controller('StoreController', function($http){
this.products = gem;
}
);
app.directive('productColor', function() {
return {
restrict: 'E', //Element Directive
templateUrl: 'product-color.html'
};
}
);
var gem = [
{
name: "Shirt",
price: 23.11,
color: "Blue"
},
{
name: "Jeans",
price: 5.09,
color: "Red"
}
];
})();
Saya mulai mendapatkan kesalahan ini segera setelah saya memasukkan menyertakan product-color.html menggunakan direktif kustom bernama productColor:
XMLHttpRequest cannot load file:///C:/product-color.html. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource.
angular.js:11594 Error: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///C:/product-color.html'.
Apa yang salah? Apakah ini masalah jalur untuk product-color.html?
Ketiga file saya berada di folder root yang sama C:/user/project/
javascript
html
angularjs
xmlhttprequest
pengguna3422637
sumber
sumber
Jawaban:
Kesalahan ini terjadi karena Anda hanya membuka dokumen html langsung dari browser. Untuk memperbaikinya, Anda harus menayangkan kode dari server web dan mengaksesnya di localhost. Jika Anda memiliki pengaturan Apache, gunakan untuk melayani file Anda. Beberapa IDE telah dibangun di server web, seperti JetBrains IDE, Eclipse ...
Jika Anda memiliki pengaturan Node.Js maka Anda dapat menggunakan http-server . Jalankan saja
npm install http-server -g
dan Anda akan dapat menggunakannya di terminal sukahttp-server C:\location\to\app
.sumber
FIX SANGAT SEDERHANA
Di terminal
Sekarang, masuk ke localhost: 8000 di browser Anda dan halaman akan ditampilkan
sumber
python -m http.server
.Operasi tidak diizinkan dalam chrome. Anda bisa menggunakan server HTTP (Tomcat) atau Anda menggunakan Firefox.
sumber
Masalah saya teratasi hanya dengan menambahkan
http://
ke alamat url saya. misalnya saya menggunakanhttp://localhost:3000/movies
sebagai gantinyalocalhost:3000/movies
.sumber
Jika Anda menggunakan ini di browser chrome / chromium (mis: di Ubuntu 14.04), Anda dapat menggunakan salah satu dari perintah di bawah ini untuk mengatasi masalah ini.
Ini memungkinkan Anda untuk memuat file dalam chrome atau chromium. Jika Anda harus melakukan operasi yang sama untuk windows, Anda dapat menambahkan sakelar ini di properti pintasan krom atau menjalankannya
cmd
dengan bendera. Operasi ini tidak diizinkan di Chrome, Opera, Internet Explorer secara default. Secara default ini hanya berfungsi di firefox dan safari. Karenanya menggunakan perintah ini akan membantu Anda.Sebagai alternatif, Anda juga dapat meng-host-nya di server web apa pun (Contoh: Tomcat-java, NodeJS-JS, Tornado-Python, dll) berdasarkan bahasa yang Anda sukai. Ini akan berfungsi dari browser apa pun.
sumber
Jika karena alasan apa pun Anda tidak dapat meng-host file dari server web dan masih membutuhkan semacam cara memuat parsial, Anda dapat menggunakan
ngTemplate
direktif.Dengan cara ini, Anda dapat memasukkan markup di dalam tag skrip di file index.html Anda dan tidak harus menyertakan markup sebagai bagian dari arahan yang sebenarnya.
Tambahkan ini ke index.html Anda
Kemudian, dalam arahan Anda:
sumber
Penyebab utama:
Protokol file tidak mendukung permintaan lintas asal untuk Chrome
Solusi 1:
gunakan protokol http sebagai ganti file, artinya: mengatur server http, seperti apache, atau nodejs + http-server
Sotution 2:
Tambahkan --allow-file-akses-dari-file setelah target pintasan Chrome, dan buka instance penelusuran baru menggunakan pintasan ini
Solusi 3:
gunakan Firefox sebagai gantinya
sumber
npm install http-server -g
http-server . -o
sumber
Saya akan menambahkan bahwa orang juga dapat menggunakan xampp, jenis mamp hal dan meletakkan proyek Anda di folder htdocs sehingga dapat diakses di localhost
sumber
Jika Anda sudah menjalankan server, jangan lupa untuk menggunakan http: // di panggilan API. Ini dapat menyebabkan masalah serius.
sumber
Alasannya
Anda tidak membuka halaman melalui server, seperti Apache, jadi ketika browser mencoba untuk mendapatkan sumber daya itu berpikir itu berasal dari domain terpisah, yang tidak diperbolehkan. Meskipun beberapa browser mengizinkannya.
Solusinya
Jalankan inetmgr dan host halaman Anda secara lokal dan telusuri sebagai http: // localhost: portnumber / PageName.html atau melalui server web seperti Apache, nginx, node dll.
Atau gunakan browser lain. Tidak ada kesalahan yang ditampilkan saat membuka halaman langsung menggunakan Firefox dan Safari. Itu hanya untuk Chrome dan IE (xx).
Jika Anda menggunakan editor kode seperti Bracket, Sublime atau Notepad ++, aplikasi-aplikasi tersebut menangani kesalahan ini secara otomatis.
sumber
Masalah ini tidak terjadi di Firefox dan Safari. Pastikan Anda menggunakan versi terbaru xml2json.js. Karena saya menghadapi kesalahan parser XML di IE. Cara terbaik Chrome Anda harus membukanya di server seperti Apache atau XAMPP.
sumber
ada ekstensi chrome 200ok itu server web untuk chrome hanya menambahkan itu dan pilih folder Anda
sumber
Anda harus membuka chrome menggunakan flag berikut Pergi untuk menjalankan menu dan ketik "chrome --disable-web-security --user-data-dir"
Pastikan semua instance chrome ditutup sebelum Anda menggunakan flag untuk membuka chrome. Anda akan mendapatkan peringatan keamanan yang menunjukkan CORS diaktifkan.
sumber
Menambahkan ke @Kirill Fuchs solusi luar biasa dan menjawab keraguan @ StackUser - saat memulai http-server, setel path sampai folder aplikasi saja, BUKAN sampai halaman html!
http-server C:\location\to\app
dan akses diindex.html
bawahapp
foldersumber
Arahkan ke C: /user/project/index.html, buka dengan Visual Studio 2017, File> View in Browser atau tekan Ctrl + Shift + W
sumber
Saya memiliki masalah yang sama. setelah menambahkan kode di bawah ini ke file app.js saya diperbaiki.
sumber