Saya mencoba mengakses skrip sebagai JSON melalui AJAX, yang berfungsi dengan baik di Safari dan browser lain, tetapi sayangnya tidak akan dijalankan di Chrome. Itu datang dengan kesalahan berikut:
Menolak untuk menjalankan skrip dari '*' karena jenis MIME-nya ('aplikasi / json') tidak dapat dieksekusi, dan pengecekan tipe MIME yang ketat diaktifkan.
Ini permintaannya:
$.ajax({
url: "http://some_url/test.json?callback=?",
type: "GET",
dataType: 'json',
cache: true,
success: function (data, status, error) {
console.log('success', data);
},
error: function (data, status, error) {
console.log('error', data, status, error);
}
});
Apakah ada yang punya solusi untuk ini?
javascript
jquery
ajax
json
google-chrome
Paul Nelligan
sumber
sumber
Jawaban:
Dengan menambahkan argumen panggilan balik, Anda memberi tahu jQuery bahwa Anda ingin membuat permintaan untuk JSONP menggunakan elemen skrip alih-alih permintaan untuk JSON menggunakan XMLHttpRequest.
JSONP bukan JSON. Ini adalah program JavaScript.
Ubah server Anda sehingga menghasilkan tipe MIME yang tepat untuk JSONP
application/javascript
.(Saat Anda melakukannya, berhenti memberi tahu jQuery bahwa Anda mengharapkan JSON karena itu kontradiktif:)
dataType: 'jsonp'
.sumber
Jika server proxy atau wadah Anda menambahkan header berikut saat menyajikan file .js, itu akan memaksa beberapa browser seperti Chrome untuk melakukan pemeriksaan ketat terhadap jenis MIME:
Hapus tajuk ini untuk mencegah Chrome melakukan pemeriksaan MIME.
sumber
X-Content-Type-Options: nosniff
header) adalah pilihan yang baik untuk mencegah serangan konten-sniffing.FYI, saya mendapatkan kesalahan yang sama dari konsol Chrome. Saya pikir fungsi AJAX saya yang menyebabkannya, tetapi saya membatalkan komentar skrip saya yang diperkecil dari
/javascripts/ajax-vanilla.min.js
menjadi/javascripts/ajax-vanilla.js
. Namun dalam kenyataannya file sumber ada di/javascripts/src/ajax-vanilla.js
. Jadi di Chrome Anda mendapatkan kesalahan jenis MIME yang buruk bahkan jika file tidak dapat ditemukan. Dalam hal ini, pesan kesalahan digambarkan sebagaitext/plain
tipe MIME yang buruk.sumber
Saya mengalami kesalahan ini menggunakan IIS 7.0 dengan halaman kesalahan 404 kustom, meskipun saya menduga ini akan terjadi dengan halaman 404. Server mengembalikan respons html 404 dengan tipe mime teks / html yang tidak dapat (dengan benar) dijalankan.
sumber
Untuk catatan dan pengguna pencarian Google , Jika Anda adalah pengembang .NET Core, Anda harus mengatur tipe konten secara manual, karena nilai defaultnya adalah nol atau kosong:
sumber
Dalam kasus saya, saya gunakan
untuk membuat permintaan (ke API Flickr), dan saya mendapatkan kesalahan MIME yang sama. Seperti jawaban di atas yang disarankan, tambahkan kode berikut:
Memperbaiki masalah dan saya tidak lagi melihat kesalahan tipe MIME di konsol Chrome.
sumber
jika aplikasi dihosting di IIS, pastikan Konten Statis diinstal. Panel Kontrol> Program> Mengaktifkan atau menonaktifkan fitur Windows> Layanan Informasi Internet> World Wide Web Services> Fitur HTTP Umum> Konten Statis.
Saya menghadapi masalah ini ketika mencoba menjalankan aplikasi yang sudah ada pada instalasi IIS 10.0 yang baru
sumber