Menolak untuk menjalankan skrip, pemeriksaan jenis MIME yang ketat diaktifkan?

Jawaban:

60

Anda memiliki <script>elemen yang mencoba memuat beberapa JavaScript eksternal.

URL yang Anda berikan itu mengarah ke file JSON dan bukan program JavaScript.

Server dengan benar melaporkan bahwa itu adalah JSON sehingga browser membatalkan dengan pesan kesalahan itu alih-alih mencoba menjalankan JSON sebagai JavaScript (yang akan menimbulkan kesalahan).


Kemungkinannya adalah alasan yang mendasari hal ini adalah Anda mencoba membuat permintaan Ajax, mengalami kesalahan lintas sumber dan mencoba memperbaikinya dengan memberi tahu jQuery bahwa Anda menggunakan JSONP. Ini hanya berfungsi jika URL menyediakan JSONP (yang merupakan subset JavaScript yang berbeda), sedangkan yang ini tidak.

URL yang sama dengan parameter string kueri tambahan callback=the_name_of_your_callback_functionmemang mengembalikan JavaScript.

Quentin
sumber
4
saya sekarang telah memberikan ini dan itu memperbaiki kesalahan <script id = "data" type = "application / json"
rob.m
2
type="application/json"- Sekarang browser tahu itu tidak mencoba memuat JavaScript, jadi browser mengabaikan elemen skrip sepenuhnya.
Quentin
59

Dalam kasus saya, itu adalah file yang tidak ditemukan, saya salah mengetik jalur ke file javascript.

mruanova.dll
sumber
8
Sama. Path yang salah menghasilkan beberapa error html-page response, yang selanjutnya menyebabkan pesan error yang membingungkan ini.
Gil Roitto
2
Jawaban yang jenius. Terima kasih :)
Anjana Silva
21

Hasil ini adalah yang pertama muncul di Google, dan lebih luas dari yang terjadi di sini. Hal berikut ini akan berlaku untuk server ekspres :

Saya mencoba mengakses sumber daya dari folder bersarang.

Di dalam index.htmlaku punya

<script src="./script.js"></script>

Rute statis dipasang di:

app.use(express.static(__dirname));

Tetapi script.jsterletak di folder bersarang seperti: js/myStaticApp/script.js menolak untuk mengeksekusi skrip, pemeriksaan jenis meme diaktifkan. Saya baru saja mengubah rute statis menjadi:

app.use(express.static(path.join(__dirname, "js")));

Sekarang berhasil :)

AIon
sumber
6

Coba gunakan express.static () jika Anda menggunakan Node.js.

Anda hanya perlu meneruskan nama direktori tempat menyimpan aset statis Anda, ke middleware express.static untuk mulai menyajikan file secara langsung. Misalnya, jika Anda menyimpan file gambar, CSS, dan JavaScript di direktori bernama publik, Anda dapat melakukan seperti di bawah ini -

yaitu: app.use (express.static ('public'));

Pendekatan ini menyelesaikan masalah saya.

Terima kasih,

Nimesh
sumber
mungkin bukan jawaban yang benar untuk pertanyaan khusus ini, tetapi itu adalah solusi untuk masalah saya. Terima kasih!
mcheah
4

Setelah mencari beberapa saat, saya menyadari bahwa kesalahan di Windows 10 64 bit saya ini terkait dengan JavaScript. Untuk melihat ini, buka DevTools browser Anda dan konfirmasikan terlebih dahulu. Dalam kasus saya ini menunjukkan kesalahan seperti "MIME type ('application / javascript') is not executable".

Jika itu masalahnya, saya telah menemukan solusinya. Inilah kesepakatannya:

  1. Meminjam pengguna "ilango100" di https://github.com/jupyterlab/jupyterlab/issues/6098 :

Saya mengalami masalah yang sama beberapa waktu lalu. Saya pikir masalah ini khusus untuk Windows. Ini karena jenis MIME yang salah yang disetel di registri Windows untuk file javascript. Saya memecahkan masalah dengan mengedit registri Windows dengan tipe konten yang benar:

regedit -> HKEY_LOCAL_MACHINE \ Software \ Classes -> Anda akan melihat banyak folder untuk setiap ekstensi file -> Cukup gulir ke bawah ke registri ".js" dan pilih -> Di sebelah kanan, jika nilai "Jenis Konten" selain application / javascript, maka ini yang menyebabkan masalah. Klik kanan pada Content Type dan ubah nilainya menjadi application / javascript

masukkan deskripsi gambar di sini

Coba lagi di browser. "

Setelah itu saya menyadari bahwa kesalahan berubah. Itu bahkan tidak terbuka secara otomatis di browser lagi. PGAdmin, bagaimanapun, akan terbuka di bilah samping (dekat dengan kalender / jam). Dengan mencoba membuka di browser secara langsung ("New PGAdmin 4 window ...") itu juga tidak berfungsi.

SOLUSI AKHIR: klik "Salin URL server" dan tempelkan di browser Anda. Itu berhasil untuk saya!

araujo.jpc
sumber
1
+1 ini berhasil untuk saya. Saya membuat perubahan di registri yang akan digunakan application/javascriptuntuk .jsekstensi. Kemudian saya menutup dan membuka kembali pgAdmin dan dimuat dengan baik (tanpa menyalin URL server). Saya menjalankan Windows 8.1 dan PostgresSQL 13.
Eric Mutta
2

Saya tidak sengaja menamai file js .minalih-alih .min.js...

OZZIE
sumber
1

Labu Python

Di Windows , ini menggunakan data dari registri, jadi jika nilai "Jenis Konten" di HKCR / .js tidak disetel ke jenis MIME yang tepat, ini dapat menyebabkan masalah Anda.

Buka regedit dan masuk ke HKEY_CLASSES_ROOT pastikan key .js / Content Type mempunyai nilai text / javascript

C:\>reg query HKCR\.js /v "Content Type"

HKEY_CLASSES_ROOT\.js
    Content Type    REG_SZ    text/javascript
Devandran
sumber
0

Tambahkan potongan kode seperti yang ditunjukkan di bawah ini ke entri html. yaitu "index.html" di reactjs

<div id="wrapper"></div>
<base href="/" />

Oseni Adefemi
sumber
1
Saya akan sangat menghargai penjelasan tentang mengapa ini berguna.
Juan Lanus
-1

Jika Anda memiliki rute dengan ekspres seperti:

app.get("*", (req, res) => {
  ...
});

Coba ubah untuk sesuatu yang lebih spesifik:

app.get("/", (req, res) => {
  ...
});

Sebagai contoh.

Atau Anda mungkin mendapati diri Anda secara rekursif menyajikan template HTML yang sama berulang kali ...

Ariel
sumber
-1

Saya mengalami masalah yang sama lalu saya perbaiki seperti ini

change "text/javascript"

untuk

type="application/json"
MH Fuad
sumber
2
Itu menghentikan browser membuat permintaan untuk URL di tempat pertama dan membuat scriptkehadiran elemen di dokumen sama sekali tidak berguna.
Quentin
-1

Dalam kasus saya, saya memiliki symlink untuk file 404 dan Tomcat saya tidak dikonfigurasi untuk mengizinkan symlink.

Saya tahu bahwa hal itu tidak mungkin menjadi penyebab bagi kebanyakan orang, tetapi jika Anda putus asa, periksa kemungkinan ini untuk berjaga-jaga.

s1m3n
sumber
-2

saya memiliki masalah yang sama dan masalahnya adalah saya kehilangan garis miring di jalur saya.

saya punya

dan untuk memperbaikinya saya hanya perlu menambahkan garis miring di antara jquery-ui dan jquery-ui.min:

  <script type="text/javascript" src="js/jquery-ui/jquery-ui.min.js"></script>

harap ini membantu: D

Tom Hoffmann V.
sumber
-12

Saya memecahkan masalah saya dengan menambahkan hanya $ {pageContext.request.contextPath} ke jalur jsp saya. dari pada :

 <script    src="static/js/jquery-3.2.1.min.js"></script>

Saya menyusun :

 <script    src="${pageContext.request.contextPath}/static/js/jquery-3.2.1.min.js"></script>
Yassine Bsf
sumber