स्क्रिप्ट निष्पादित करने के लिए मना कर दिया, सख्त MIME प्रकार की जाँच सक्षम है?


92

मुझे कंसोल में यह त्रुटि क्यों हो रही है?

' Https://www.googleapis.com/customsearch/v1?key=API_KEY&q=flower&searchType=image&fileType=jpg&imgSize.small&alt=json ' से स्क्रिप्ट निष्पादित करने से इनकार कर दिया क्योंकि इसका MIME प्रकार ('एप्लिकेशन / json') निष्पादन योग्य नहीं है; सख्त MIME प्रकार की जाँच सक्षम है।

जवाबों:


60

आपके पास एक <script>तत्व है जो कुछ बाहरी जावास्क्रिप्ट को लोड करने की कोशिश कर रहा है।

आपने जो URL दिया है वह JSON फ़ाइल को इंगित करता है और जावास्क्रिप्ट प्रोग्राम को नहीं।

सर्वर सही ढंग से रिपोर्ट कर रहा है कि यह JSON है इसलिए ब्राउज़र JSON को जावास्क्रिप्ट के रूप में निष्पादित करने की कोशिश करने के बजाय उस त्रुटि संदेश के साथ निरस्त कर रहा है (जो त्रुटि को फेंक देगा)।


ऑड्स यह है कि इसका अंतर्निहित कारण यह है कि आप एक अजाक्स अनुरोध करने की कोशिश कर रहे हैं, एक क्रॉस ओरिजिनल एरर मारा है और jQuery को यह बताकर इसे ठीक करने का प्रयास किया है कि आप JSONP का उपयोग कर रहे हैं। यह केवल तभी काम करता है जब URL JSONP प्रदान करता है (जो जावास्क्रिप्ट का एक अलग सबसेट है), जो यह नहीं करता है।

अतिरिक्त क्वेरी स्ट्रिंग पैरामीटर वाला एक ही URL callback=the_name_of_your_callback_functionहालांकि जावास्क्रिप्ट लौटाता है।


4
मैंने अब यह दिया है और यह त्रुटि को ठीक करता है <script id = "data" type = "application / json"
rob.m

2
type="application/json"- अब ब्राउज़र जानता है कि यह जावास्क्रिप्ट को लोड करने की कोशिश नहीं कर रहा है, इसलिए यह पूरी तरह से स्क्रिप्ट तत्व की अनदेखी करता है।
क्वेंटिन

59

मेरे मामले में यह एक फ़ाइल नहीं मिली, मैंने जावास्क्रिप्ट फ़ाइल को गलत तरीके से टाइप किया।


8
यह वही। कुछ त्रुटि HTML- पृष्ठ प्रतिक्रिया में गलत पथ परिणाम, जो बदले में इस भ्रामक त्रुटि संदेश का कारण बनता है।
गिल रोइत्तो

2
उदार उत्तर। धन्यवाद :)
अंजना सिल्वा

21

यह परिणाम Google में पहला पॉप-अप है, और जो यहां हो रहा है, उससे अधिक व्यापक है। निम्नलिखित एक एक्सप्रेस सर्वर पर लागू होगा :

मैं नेस्टेड फ़ोल्डर से संसाधनों तक पहुंचने की कोशिश कर रहा था।

अंदर index.htmlमेरे पास था

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

स्थिर मार्ग पर आरोहित किया गया था:

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

लेकिन नेस्टेड फ़ोल्डरscript.js में स्थित है जैसे: मैंने सिर्फ स्थैतिक मार्ग को बदल दिया है:js/myStaticApp/script.js स्क्रिप्ट निष्पादित करने से इनकार कर दिया, मेम प्रकार की जाँच सक्षम है।

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

अब यह काम कर रहा है :)


6

यदि आप Node.js. का उपयोग कर रहे हैं, तो एक्सप्रेस.स्टैटिक () का उपयोग करने का प्रयास करें

आपको केवल उन निर्देशिकाओं का नाम पास करना होगा जहां आप अपनी स्थिर संपत्ति रखते हैं, सीधे फाइलों की सेवा शुरू करने के लिए एक्सप्रेस मिडिलवेयर के लिए। उदाहरण के लिए, यदि आप अपनी छवियों, सीएसएस और जावास्क्रिप्ट फ़ाइलों को सार्वजनिक नाम की एक निर्देशिका में रखते हैं, तो आप नीचे दिए अनुसार कर सकते हैं -

अर्थात: app.use (express.static ('सार्वजनिक'));

इस दृष्टिकोण से मेरी समस्या हल हो गई।

धन्यवाद,


इस विशिष्ट प्रश्न का सही उत्तर नहीं हो सकता है लेकिन यह मेरी समस्या का समाधान था। धन्यवाद!
मचै

4

थोड़ी देर खोजने के बाद मुझे महसूस हुआ कि मेरे विंडोज 10 64 बिट्स में यह त्रुटि जावास्क्रिप्ट से संबंधित है। यह देखने के लिए अपने ब्राउज़र DevTools पर जाएं और पहले पुष्टि करें। मेरे मामले में यह "MIME प्रकार ('एप्लिकेशन / जावास्क्रिप्ट') निष्पादन योग्य नहीं है" जैसी त्रुटि दिखाता है।

अगर ऐसा है तो मुझे इसका हल मिल गया है। यहाँ सौदा है:

  1. Https://github.com/jupyterlab/jupyterlab/issues/6098 पर उपयोगकर्ता "ilango100" उधार ले रहा है :

मैं कुछ समय पहले एक ही मुद्दा था। मुझे लगता है कि यह समस्या विंडोज के लिए विशिष्ट है। यह जावास्क्रिप्ट रजिस्ट्री फ़ाइलों के लिए Windows रजिस्ट्री में गलत MIME प्रकार सेट होने के कारण है। मैंने Windows रजिस्ट्री को सही सामग्री प्रकार के साथ संपादित करके समस्या को हल किया:

regedit -> HKEY_LOCAL_MACHINE \ Software \ Classes -> आपको प्रत्येक फ़ाइल एक्सटेंशन के लिए बहुत सारे फ़ोल्डर दिखाई देंगे -> बस ".js" रजिस्ट्री पर स्क्रॉल करें और इसे चुनें -> दाईं ओर, यदि "सामग्री प्रकार" मान इसके अलावा अन्य है। आवेदन / जावास्क्रिप्ट, तो यह समस्या पैदा कर रहा है। सामग्री प्रकार पर राइट क्लिक करें और मूल्य को एप्लिकेशन / जावास्क्रिप्ट में बदलें

यहाँ छवि विवरण दर्ज करें

ब्राउज़र में फिर से प्रयास करें। "

उसके बाद मुझे एहसास हुआ कि त्रुटि बदल जाती है। यह अब ब्राउज़र में अपने आप खुलता भी नहीं है। PGAdmin, हालांकि, साइड बार (कैलेंडर / घड़ी के करीब) पर खुला रहेगा। सीधे ब्राउज़र में खोलने की कोशिश करके ("न्यू PGAdmin 4 विंडो ...") यह या तो काम नहीं करता है।

अंतिम समाधान: "सर्वर URL की प्रतिलिपि बनाएँ" पर क्लिक करें और इसे अपने ब्राउज़र पर पेस्ट करें। यह मेरे लिए काम किया!


1
+1 यह मेरे लिए काम कर गया। मैं उपयोग करने के लिए रजिस्ट्री में परिवर्तन किया application/javascriptके लिए .jsविस्तार। तब मैंने pgAdmin को बंद और फिर से खोल दिया और यह ठीक लोड हुआ (सर्वर URL की नकल के बिना)। मैं Windows 8.1 और PostgresSQL 13.
Eric Mutta

2

मैंने गलती से js फ़ाइल का नाम .minके बजाय .min.js...


1

पायथन फ्लास्क

पर विंडोज , यह रजिस्ट्री डेटा का उपयोग करता है, तो HKCR में "सामग्री प्रकार" मूल्य / .js उचित माइम के लिए सेट नहीं है टाइप यह आपकी समस्या पैदा कर सकता है।

Regedit खोलें और HKEY_CLASSES_ROOT पर जाएं सुनिश्चित करें कि कुंजी .js / सामग्री प्रकार में मान पाठ / जावास्क्रिप्ट है

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

HKEY_CLASSES_ROOT\.js
    Content Type    REG_SZ    text/javascript

0

कोड स्निपेट जोड़ें जैसा कि नीचे प्रविष्टि html में दिखाया गया है। Reajjs में "index.html"

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


1
मैं इस पर बहुत स्पष्टीकरण की सराहना करूंगा कि यह क्यों उपयोगी है।
जुआन लानुस

-1

यदि आपके पास एक्सप्रेस पर कोई मार्ग है जैसे:

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

कुछ और विशिष्ट के लिए इसे बदलने की कोशिश करें:

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

उदाहरण के लिए।

या फिर आप बस अपने आप को एक से अधिक HTML टेम्पलेट की सेवा कर सकते हैं ...


-1

मैं एक ही समस्या है तो मैं इस तरह तय किया था

change "text/javascript"

सेवा

type="application/json"

2
यह पहली बार में URL के लिए अनुरोध करने वाले ब्राउज़र को रोकता है और scriptदस्तावेज़ में तत्व की उपस्थिति को पूरी तरह से बेकार कर देता है।
क्वेंटिन

-1

मेरे मामले में मेरे पास 404 फाइल के लिए एक सिमलिंक था और सिम्बलिंक की अनुमति देने के लिए मेरी टॉमकैट को कॉन्फ़िगर नहीं किया गया था।

मुझे पता है कि यह ज्यादातर लोगों के लिए होने की संभावना नहीं है, लेकिन अगर आप हताश हैं, तो बस इस मामले की जांच करें।


-2

मैं एक ही मुद्दा था और समस्या यह है कि मैं अपने रास्ते में एक स्लेश याद आ रही थी।

मैं था

और इसे ठीक करने के लिए मुझे केवल jquery-ui और jquery-ui.min के बीच स्लैश जोड़ने की आवश्यकता थी:

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

उम्मीद है कि इस मदद करता है: डी


-12

मैंने अपने 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>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.