MIME प्रकार बेमेल (X-Content-Type-Options: nosniff) के कारण संसाधन अवरुद्ध


92

मैं जावास्क्रिप्ट और HTML का उपयोग करके एक वेब पेज विकसित कर रहा हूं, जब मैं अपने HTML पेज से त्रुटियों की सूची प्राप्त कर चुका हूं तो सब कुछ अच्छा काम कर रहा था:

The resource from “https://raw.githubusercontent.com/dataarts/dat.gui/master/build/dat.gui.min.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/dev/build/three.js” was
  blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/CanvasRenderer.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/Projector.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/dev/build/three.js” was
  blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).

स्वचालित ब्राउज़र अपडेट (मोज़िला फ़ायरफ़ॉक्स) के बाद ये त्रुटियां सामने आईं, हो सकता है कि सेट अप में कुछ बदल दिया गया हो। क्या आप इस समस्या को हल करने का कोई तरीका जानते हैं?


11
GitHub से फ़ाइलें लोड न करें। इसके बजाय, CDN का उपयोग करें।
SLaks

जवाबों:


77

जाँचें कि क्या फ़ाइल पथ सही है और फ़ाइल मौजूद है - मेरे मामले में यह समस्या थी - जैसा कि मैंने इसे ठीक किया, त्रुटि गायब हो गई


मैं भी एक ही मुद्दे का सामना कर रहा हूँ और फ़ाइल पब निर्देशिका में भी नहीं है। मुझे क्या करना चाहिए? इसकी एक कस्टम थीम फ़ाइल है।
साईड

@SaiidatRLTSquare यदि फ़ाइल मौजूद नहीं है, तो आपको कहीं से ढूंढना चाहिए और उसे वहां डाल देना चाहिए - या यदि वह फ़ाइल महत्वपूर्ण नहीं है - बस उस लाइन को हटा दें जिसमें यह शामिल है (या खाली फ़ाइल बनाएं) तो यह त्रुटि नहीं देगा
dav

नोड के साथ पैसेंजर का उपयोग करने से मेरे निर्माण के रास्ते बंद हो गए, यह तय किए गए रास्तों को अपडेट करता है। धन्यवाद!
एरॉन बेलचैबर

29

यह आपके URL को बदलकर तय किया जा सकता है, उदाहरण खराब:

https://raw.githubusercontent.com/svnpenn/bm/master/yt-dl/yt-dl.js
Content-Type: text/plain; charset=utf-8

उदाहरण अच्छा:

https://cdn.rawgit.com/svnpenn/bm/master/yt-dl/yt-dl.js
content-type: application/javascript;charset=utf-8

rawgit.com github के लिए एक कैशिंग प्रॉक्सी सेवा है। आप वहां भी जा सकते हैं और अपने मूल raw.githubusercontent.com URL के लिए एक समान URL प्राप्त कर सकते हैं । इसके FAQ देखें


3
एडेस raw.githubusercontent.comमें बदल दिया जाता है, cdn.rawgit.comजो सही माइम-प्रकार के साथ प्रतिक्रिया करेगा।
एक्सल गिल्मिन

रावतजी बंद कर रहे हैं। आप निम्नलिखित उत्तर में बताए अनुसार jsdeliver का उपयोग कर सकते हैं - stackoverflow.com/a/64456518/9640177
mayank1513

15

हमने उत्पादन में इस त्रुटि का सामना करना शुरू कर दिया, जब हमारी डेप्स टीम ने वेबसर्वर कॉन्फ़िगरेशन को जोड़कर बदल दिया X-Content-Type-Options: nosniff। अब, इसके कारण, ब्राउज़र को संसाधनों की व्याख्या करने के लिए मजबूर किया गया था क्योंकि यह content-typeप्रतिक्रिया हेडर के पैरामीटर में उल्लिखित था ।

अब, शुरुआत से, हमारा एप्लिकेशन सर्वर स्पष्ट रूप से जेएस फाइलों के कंटेंट-टाइप को सेट कर रहा था text/plain। चूंकि, X-Content-Type-Options: nosniffवेबसर्वर में सेट नहीं किया गया था, ब्राउज़र स्वचालित रूप से js फ़ाइलों को जावास्क्रिप्ट फ़ाइलों के रूप में व्याख्या कर रहा था, हालांकि सामग्री-प्रकार को पाठ / सादे के रूप में उल्लेख किया गया था। इसे MIME- सूँघना कहा जाता है। अब, X-Content-Type-Options: nosniff सेट करने के बाद, ब्राउज़र को MIME- सूँघने के लिए मजबूर नहीं किया गया और प्रतिक्रिया हेडर में वर्णित सामग्री-प्रकार को लेना पड़ा। इसके कारण, इसने js फ़ाइलों को सादे पाठ फ़ाइलों के रूप में व्याख्या की और उन्हें निष्पादित करने या उन्हें अवरुद्ध करने से इनकार किया। आपकी त्रुटियों में भी यही दिखाया गया है।

समाधान: अपने सर्वर content-typeको जेएस फाइलों के रूप में सेट करना है

application/javascript;charset=utf-8

इस तरह, यह सभी जेएस फाइलों को सामान्य रूप से लोड करेगा और समस्या हल हो जाएगी।


जहां मुझे सर्वर सामग्री-प्रकार सेट करने की आवश्यकता है, मेरा मतलब है कि मुझे किस फ़ाइल को रखने की आवश्यकता है, मैं टॉमकैट 8.5 सर्वर का उपयोग कर रहा हूं
भास्कर अरनी

यह सब अनुप्रयोग वास्तुकला पर निर्भर करता है। हमारे मामले में, यह एक पुराना पुराना सर्वलेट आधारित अखंड आवेदन था। इसलिए, इसे सेवा पद्धति में वहीं सेट किया जा रहा था।
मनीष बंसल

इसके बजाय HTML को बदलने के बारे में क्या?
एरॉन फ्रेंके

माफ़ करना। मैं तुम्हें नहीं मिला यहाँ, कोई html नहीं था। हमारे पास सर्वलेट आधारित एप्लिकेशन था। आप html में क्या बदलाव सुझा रहे हैं?
मनीष बंसल


7

क्या आप एक्सप्रेस का उपयोग कर रहे हैं?

अपना पथ जांचें (नोट करें " /" के बाद / सार्वजनिक /):

app.use(express.static(__dirname + "/public/"));

// नोट: आपको "सीएसएस" से पहले "/" की आवश्यकता नहीं है क्योंकि इसकी पहले से ही ऊपर शामिल है:

rel="stylesheet" href="css/style.css

उम्मीद है की यह मदद करेगा


5

वर्डप्रेस के लिए

मेरे मामले में मैंने बस स्लैश को याद किया "/" get_template_directory_uri के बाद () इसलिए परिणाम / उत्पन्न पथ गलत था:

मेरा गलत कोड:

wp_enqueue_script( 'retina-js', get_template_directory_uri().'js/retina.min.js' ); 

मेरा सही कोड:

wp_enqueue_script( 'retina-js', get_template_directory_uri().'/js/retina.min.js' );

3

ऐसा इसलिए हो सकता है क्योंकि ब्राउज़र किसी फ़ाइल तक नहीं पहुंच सकता है। मैं नोड के साथ एप्लिकेशन बनाते समय इस प्रकार की त्रुटि से लड़ गया। आप स्क्रिप्ट फ़ाइल को सीधे अनुरोध करने की कोशिश कर सकते हैं (यूआरएल को कॉपी करना और पेस्ट करना) और देखें कि क्या आप इसे पुनः प्राप्त कर सकते हैं। आप देख सकते हैं कि वास्तविक समस्या क्या है। यह उस फ़ोल्डर की अनुमति के कारण हो सकता है जिसमें फ़ाइल स्थित है, या ब्राउज़र केवल इसे गलत पथ के कारण नहीं पा सकता है। नोड.जेएस में, फ़ाइल को रूट निर्दिष्ट करने के बाद, सभी काम करता है।


इस MS पेज के अनुसार यह MIME प्रकार की समस्या लगती है। लेकिन MIMENode.js में प्रकार कैसे निर्दिष्ट करेंगे ? (किसी को सभी फ़ाइलों के लिए पूर्ण पथ निर्दिष्ट नहीं करना चाहिए, लेकिन केवल संपत्ति निर्देशिकाओं के लिए, नहीं?)
not2qubit

3

यह एक गलत रास्ता हो सकता है। आपकी मुख्य ऐप फ़ाइल में यह सुनिश्चित करें:

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

उदाहरण के लिए अपने सीएसएस के लिए लिंक:

<link href="/css/clean-blog.min.css" rel="stylesheet">

जेएस फ़ाइलों के लिए लिंक के समान:

<script src="/js/clean-blog.min.js"></script>

2

मैंने इस समस्या को UTF-8 से चार्ट में बदलकर बिना BOM के साधारण UTF-8 से नोटपैड ++ में बदल दिया है


1

जब मैं azure स्टोरेज को स्टैटिक वेबसाइट के रूप में उपयोग कर रहा था तो मुझे यह त्रुटि हुई थी, कॉपी की गई js फाइलों में कंटेंट टाइप था text/plain; charset=utf-8और मैंने कंटेंट टाइप को बदल दियाapplication/javascript

इसने काम करना शुरू कर दिया।


0

प्रोटोकॉल HTTPS और HTTP के लिए देखें

कभी-कभी यदि आप मिश्रित प्रोटोकॉल का उपयोग कर रहे हैं [यह ज्यादातर JSONP कॉलबैक के साथ होता है] तो आप इस ERROR में समाप्त हो सकते हैं।

सुनिश्चित करें कि वेब पेज और रिसोर्स पेज दोनों में एक ही HTTP प्रोटोकॉल है।


0

मुझे django server में भी इसी समस्या का सामना करना पड़ रहा है। क्या मैंने DEBUG = True को सेटिंग में बदल दिया है जो अपने काम को पूरा करेगा


0

यह मेरे लिए गलत टैग के लिए हुआ। गलती से मैं js फ़ाइल को जोड़ देता हूँlink टैग ।

उदाहरण: (गलत एक)

<link rel="stylesheet" href="plugins/timepicker/bootstrap-timepicker.min.js">

के लिए सही टैग का उपयोग करके इसे हल किया javascript। उदाहरण:

<script src="plugins/timepicker/bootstrap-timepicker.min.js"></script>

0

https://cdn.rawgit.com बंद हो रहा है। इस प्रकार, वैकल्पिक विकल्पों में से एक का उपयोग किया जा सकता है। JSDeliver एक मुफ्त सीडीएन है जिसका उपयोग किया जा सकता है।

// किसी भी GitHub रिलीज, प्रतिबद्ध, या शाखा को लोड करें

// नोट: हम उन परियोजनाओं के लिए एनपीएम का उपयोग करने की सलाह देते हैं जो इसका समर्थन करते हैं

https://cdn.jsdelivr.net/gh/user/repo@version/file

// लोड jQuery v3.2.1

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/dist/jquery.min.js

// एक विशिष्ट संस्करण के बजाय एक संस्करण रेंज का उपयोग करें

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2/dist/jquery.min.js

https://cdn.jsdelivr.net/gh/jquery/jquery@3/dist/jquery.min.js

// नवीनतम को प्राप्त करने के लिए संस्करण को पूरी तरह से छोड़ दें

// आपको उत्पादन में इसका उपयोग नहीं करना चाहिए

https://cdn.jsdelivr.net/gh/jquery/jquery/dist/jquery.min.js

// ".min" को किसी भी जेएस / सीएसएस फ़ाइल में एक छोटा संस्करण प्राप्त करने के लिए जोड़ें

// यदि कोई मौजूद नहीं है, तो हम इसे आपके लिए उत्पन्न करेंगे

https://cdn.jsdelivr.net/gh/jquery/jquery@3.2.1/src/core.min.js

/ / एक निर्देशिका लिस्टिंग पाने के लिए अंत में जोड़ें

https://cdn.jsdelivr.net/gh/jquery/jquery/

रेफरी - https://www.jsdelivr.com/?docs=gh

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