ปฏิเสธที่จะเรียกใช้สคริปต์การตรวจสอบประเภท MIME ที่เข้มงวดถูกเปิดใช้งานหรือไม่


92

เหตุใดฉันจึงได้รับข้อผิดพลาดนี้ในคอนโซล

ปฏิเสธที่จะเรียกใช้สคริปต์จาก ' https://www.googleapis.com/customsearch/v1?key=API_KEY&q=flower&searchType=image&fileType=jpg&imgSize=small&alt=json ' เนื่องจากประเภท MIME ('application / json') ไม่สามารถเรียกใช้งานได้และ เปิดใช้งานการตรวจสอบประเภท MIME ที่เข้มงวด

คำตอบ:


60

คุณมี<script>องค์ประกอบที่พยายามโหลด JavaScript ภายนอกบางส่วน

URL ที่คุณกำหนดให้ชี้ไปที่ไฟล์ JSON ไม่ใช่โปรแกรม JavaScript

เซิร์ฟเวอร์รายงานอย่างถูกต้องว่าเป็น JSON ดังนั้นเบราว์เซอร์จึงยกเลิกด้วยข้อความแสดงข้อผิดพลาดนั้นแทนที่จะพยายามเรียกใช้ JSON เป็น JavaScript (ซึ่งจะทำให้เกิดข้อผิดพลาด)


อัตราต่อรองคือเหตุผลพื้นฐานที่ทำให้คุณพยายามส่งคำขอ Ajax พบข้อผิดพลาดข้ามจุดเริ่มต้นและพยายามแก้ไขโดยบอก jQuery ว่าคุณกำลังใช้ JSONP สิ่งนี้ใช้ได้เฉพาะเมื่อ URL มี JSONP (ซึ่งเป็นส่วนย่อยอื่นของ JavaScript) ซึ่งอันนี้ไม่ได้

URL เดียวกันกับพารามิเตอร์สตริงการสืบค้นเพิ่มเติมcallback=the_name_of_your_callback_functionจะส่งคืน JavaScript


4
ตอนนี้ฉันได้ให้สิ่งนี้แล้วและจะแก้ไขข้อผิดพลาด <script id = "data" type = "application / json"
rob.m

2
type="application/json"- ตอนนี้เบราว์เซอร์รู้แล้วว่าไม่ได้พยายามโหลด JavaScript ดังนั้นจึงไม่สนใจองค์ประกอบของสคริปต์ทั้งหมด
Quentin

59

ในกรณีของฉันมันไม่พบไฟล์ฉันพิมพ์พา ธ ไปยังไฟล์จาวาสคริปต์ไม่ถูกต้อง


8
เหมือน. เส้นทางที่ไม่ถูกต้องส่งผลให้เกิดข้อผิดพลาด html-page การตอบสนองซึ่งจะทำให้ข้อความแสดงข้อผิดพลาดนี้สับสน
Gil Roitto

2
คำตอบที่จริงใจ ขอบคุณ :)
Anjana Silva

21

ผลลัพธ์นี้เป็นผลลัพธ์แรกที่ปรากฏใน Google และกว้างกว่าที่เกิดขึ้นที่นี่ สิ่งต่อไปนี้จะใช้กับเซิร์ฟเวอร์ด่วน :

ฉันพยายามเข้าถึงทรัพยากรจากโฟลเดอร์ที่ซ้อนกัน

ข้างในindex.htmlฉันมี

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

เส้นทางคงที่ติดตั้งที่:

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

แต่script.jsจะอยู่ในโฟลเดอร์ที่ซ้อนกันใน: js/myStaticApp/script.js ปฏิเสธที่จะเรียกใช้สคริปต์การตรวจสอบประเภท meme ถูกเปิดใช้งาน ฉันเพิ่งเปลี่ยนเส้นทางแบบคงที่เป็น:

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

ตอนนี้ใช้งานได้แล้ว :)


6

ลองใช้express.static ()หากคุณใช้ Node.js

คุณเพียงแค่ต้องส่งชื่อของไดเร็กทอรีที่คุณเก็บเนื้อหาแบบคงที่ของคุณไปยังมิดเดิลแวร์ express.static เพื่อเริ่มให้บริการไฟล์โดยตรง ตัวอย่างเช่นหากคุณเก็บไฟล์รูปภาพ CSS และ JavaScript ไว้ในไดเร็กทอรีที่มีชื่อว่า public คุณสามารถทำได้ดังนี้ -

เช่น: app.use (express.static ('public'));

วิธีนี้ช่วยแก้ปัญหาของฉันได้

ขอบคุณ


อาจไม่ใช่คำตอบที่ถูกต้องสำหรับคำถามนี้ แต่เป็นวิธีแก้ปัญหาของฉัน ขอบคุณ!
mcheah

4

หลังจากค้นหาอยู่พักหนึ่งฉันก็รู้ว่าข้อผิดพลาดนี้ใน Windows 10 64 บิตของฉันเกี่ยวข้องกับ JavaScript ในการดูสิ่งนี้ให้ไปที่ DevTools เบราว์เซอร์ของคุณและยืนยันก่อน ในกรณีของฉันมันแสดงข้อผิดพลาดเช่น "ประเภท MIME ('application / javascript') ไม่สามารถเรียกใช้งานได้"

หากเป็นเช่นนั้นฉันพบวิธีแก้ไขแล้ว นี่คือข้อตกลง:

  1. การยืมผู้ใช้ "ilango100" บนhttps://github.com/jupyterlab/jupyterlab/issues/6098 :

ฉันมีปัญหาเดียวกันแน่นอนเมื่อสักครู่ที่ผ่านมา ฉันคิดว่าปัญหานี้เฉพาะกับ Windows เกิดจากการตั้งค่าประเภท MIME ผิดในรีจิสทรีของ Windows สำหรับไฟล์จาวาสคริปต์ ฉันแก้ไขปัญหาโดยแก้ไขรีจิสทรีของ Windows ด้วยประเภทเนื้อหาที่ถูกต้อง:

regedit -> HKEY_LOCAL_MACHINE \ Software \ Classes -> คุณจะเห็นโฟลเดอร์จำนวนมากสำหรับแต่ละนามสกุลไฟล์ -> เพียงแค่เลื่อนลงไปที่ ".js" application / javascript นั่นคือสาเหตุของปัญหา คลิกขวาที่ Content Type และเปลี่ยนค่าเป็น application / javascript

ป้อนคำอธิบายภาพที่นี่

ลองอีกครั้งในเบราว์เซอร์ "

หลังจากนั้นฉันก็ตระหนักว่าข้อผิดพลาดเปลี่ยนไป มันไม่ได้เปิดโดยอัตโนมัติในเบราว์เซอร์อีกต่อไป อย่างไรก็ตาม PGAdmin จะเปิดขึ้นที่แถบด้านข้าง (ใกล้กับปฏิทิน / นาฬิกา) โดยพยายามเปิดในเบราว์เซอร์โดยตรง ("หน้าต่างใหม่ PGAdmin 4 ... ") ก็ไม่ได้ผลเช่นกัน

วิธีแก้ไขขั้นสุดท้าย: คลิกที่ "คัดลอก URL ของเซิร์ฟเวอร์" และวางลงในเบราว์เซอร์ของคุณ มันได้ผลสำหรับฉัน!


1
+1 สิ่งนี้ได้ผลสำหรับฉัน ฉันทำการเปลี่ยนแปลงในรีจิสทรีเพื่อใช้application/javascriptสำหรับ.jsส่วนขยาย จากนั้นฉันปิดและเปิด pgAdmin อีกครั้งและโหลดได้ดี (โดยไม่ต้องคัดลอก URL ของเซิร์ฟเวอร์) ฉันใช้ Windows 8.1 และ PostgresSQL 13
Eric Mutta

2

ฉันตั้งชื่อไฟล์ js โดยไม่ได้ตั้งใจ.minแทนที่จะเป็น.min.js...


1

ขวด Python

ในWindowsจะใช้ข้อมูลจากรีจิสทรีดังนั้นหากไม่ได้ตั้งค่า "ประเภทเนื้อหา" ใน HKCR / .js เป็นประเภท MIME ที่เหมาะสมอาจทำให้เกิดปัญหาของคุณได้

เปิดregeditและไปที่HKEY_CLASSES_ROOTตรวจสอบว่าคีย์. js / Content Typeมีค่าtext / javascript

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

HKEY_CLASSES_ROOT\.js
    Content Type    REG_SZ    text/javascript

0

เพิ่มข้อมูลโค้ดดังที่แสดงด้านล่างในรายการ html เช่น "index.html" ใน reactjs

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


1
ฉันจะขอบคุณมากที่อธิบายว่าเหตุใดจึงมีประโยชน์
Juan Lanus

-1

หากคุณมีเส้นทางด่วนเช่น:

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

ลองเปลี่ยนเพื่อสิ่งที่เฉพาะเจาะจงมากขึ้น:

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

ตัวอย่างเช่น.

หรือมิฉะนั้นคุณอาจพบว่าตัวเองให้บริการเทมเพลต HTML เดิมซ้ำแล้วซ้ำอีก ...


-1

ฉันมีปัญหาเดียวกันแล้วฉันก็แก้ไขเช่นนี้

change "text/javascript"

ถึง

type="application/json"

2
ซึ่งจะหยุดเบราว์เซอร์ที่ส่งคำขอ URL ตั้งแต่แรกและทำให้การscriptมีอยู่ขององค์ประกอบในเอกสารไม่มีจุดหมายโดยสิ้นเชิง
Quentin

-1

ในกรณีของฉันฉันมี symlink สำหรับไฟล์ 404 และ Tomcat ของฉันไม่ได้กำหนดค่าให้อนุญาต symlink

ฉันรู้ว่ามันไม่น่าจะเป็นสาเหตุสำหรับคนส่วนใหญ่ แต่ถ้าคุณหมดหวังให้ตรวจสอบความเป็นไปได้นี้ในกรณี


-2

ฉันมีปัญหาเดียวกันและปัญหาคือฉันไม่มีเครื่องหมายทับในเส้นทางของฉัน

ฉันมี

และเพื่อแก้ไขฉันจำเป็นต้องเพิ่มเครื่องหมายทับระหว่าง jquery-ui และ jquery-ui.min:

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

หวังว่านี่จะช่วยได้: D


-12

ฉันแก้ไขปัญหาของฉันโดยเพิ่มเพียง $ {pageContext.request.contextPath} ในพา ธ jsp ของฉัน แทน :

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

ฉันตั้งค่า:

 <script    src="${pageContext.request.contextPath}/static/js/jquery-3.2.1.min.js"></script>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.