2017-12-28 135 views
10

का उपयोग कर InternetExplorer में MIME प्रकार समस्या इंटरनेट एक्सप्लोरर में, अनुरोधित यूआरएल माइम प्रकार मेलमिच के कारण अवरुद्ध किया जा रहा है। परिदृश्य यह है कि ग्राहक से प्रॉक्सी सर्वर के माध्यम से गंतव्य सर्वर पर अनुरोध भेजा जा रहा है। मान लें कि हमारे पास ए (क्लाइंट), बी (प्रॉक्सी सर्वर), सी (गंतव्य सर्वर) है। अनुरोध ए (क्लाइंट) से बी (प्रॉक्सी सर्वर) और बी (प्रॉक्सी सर्वर) से सी (गंतव्य सर्वर) तक जाता है। इसी तरह प्रतिक्रिया सी (गंतव्य सर्वर) से बी (प्रॉक्सी सर्वर) और बी (प्रॉक्सी सर्वर) से ए (क्लाइंट) से अनुरोध भी शुरू की गई थी, जहां से अनुरोध शुरू किया गया था। अब समस्या यह है कि प्रतिक्रिया सामग्री-प्रकार "एप्लिकेशन/तरल" है लेकिन क्लाइंट "स्क्रिप्ट src = proxyserver/test" का उपयोग करके अनुरोध को सक्रिय करता है, इसलिए प्रतिक्रिया के लिए छोड़कर सामग्री-प्रकार "टेक्स्ट/जावास्क्रिप्ट" बन जाता है। गंतव्य सर्वर के "एप्लिकेशन/तरल" से प्रतिक्रिया-प्रकार की प्रतिक्रिया को बदलने की अनुमति नहीं है। पूरा परिदृश्य सभी अन्य ब्राउज़र में पूरी तरह से काम करता है और प्रतिक्रिया आसानी से सुलभ है। हालांकि आईई में हमें त्रुटि मिल रही है क्योंकि "माइम टाइप मिस्चैच के कारण अनुरोध अवरुद्ध है"। तो क्या कोई समाधान प्रदान कर सकता है कि हम इसे कैसे काम कर सकते हैं? नीचे त्रुटि का स्क्रीनशॉट है।प्रॉक्सी

enter image description here

+0

उस अनुरोध के लिए आपका "स्वीकार करें" शीर्षलेख क्या है? क्या यह एक AJAX अनुरोध है या एक नियमित अनुरोध है? –

+0

नियमित अनुरोध !!! स्क्रिप्ट टैग के माध्यम से बुलाया गया ... –

+0

"स्क्रिप्ट टैग के माध्यम से बुलाया गया" - क्या आप इस अनुरोध को जारी करने वाले कोड को जोड़ सकते हैं? क्या आपने नीचे लिखे गए उत्तर को ध्यान में रखा है? –

उत्तर

1

आपको एक स्क्रिप्ट, एक बाहरी स्क्रिप्ट बनाने की आवश्यकता है जो अजाक्स कॉल या xmlhttprequest का उपयोग करके वांछित कोड पर कॉल करेगी, जहां आपको स्वीकार्य हेडर सेट करना होगा ताकि वांछित माइम प्रकार हो। तो क्लाइंट से यह स्क्रिप्ट टैग का उपयोग करके उस बाहरी स्क्रिप्ट को कॉल करेगा जो प्रॉक्सी सर्वर के माध्यम से निष्पादित किया जाएगा और जो वास्तविक डेटा को कॉल देगा और इसकी प्रतिक्रिया प्राप्त करेगा और क्लाइंट को वापस भेज देगा। लेकिन चूंकि यह स्क्रिप्ट को कॉल करेगा, डिफ़ॉल्ट हेडर द्वारा टेक्स्ट/जावास्क्रिप्ट के रूप में वापस आ जाएगा और त्रुटि हल हो जाएगी।

3

टी एल; डॉ - आप माइम प्रकार बदलने के लिए की आवश्यकता होगी।

यह समस्या तब प्रकट होती है जब अनुरोध अपेक्षित प्रकार प्रतिक्रिया-सामग्री प्रकार (जैसा कि शीर्षलेख द्वारा इंगित किया गया है) से अलग होता है। सही समाधान प्रतिक्रिया देना होगा और शीर्षकों को एक दूसरे के साथ संगत अनुरोध करना होगा। इसका मतलब है कि, आप एक स्क्रिप्ट टैग के माध्यम से "" कॉल को accept शीर्षलेख के जवाब में content-type शीर्षलेख के रूप में बदलना चाहिए।

nosniff ब्लाकों एक अनुरोध यदि अनुरोध प्रकार है "शैली" और माइम प्रकार नहीं "text/css", या "स्क्रिप्ट" और है:

इसके अलावा, प्रलेखन पर एक नज़र एमआईएमई प्रकार जावास्क्रिप्ट एमआईएम प्रकार नहीं है।

here देखें।

मैं इस URL कि देखें: Content-Type:text/html; charset=utf-8 जो जावास्क्रिप्ट-माइम-प्रकार नहीं है: https://nirma.myshopify.com/apps/GeoShippingBar/geoShippingBarProxy इस सामग्री प्रकार है।

+0

मैंने आपके समाधान की कोशिश की लेकिन यह काम नहीं कर रहा है। हाँ, मैं समझता हूं कि नोस्निफ सटीक माइम प्रकार मैच के लिए पूछता है लेकिन यहां समस्या प्रॉक्सी कोड में तरल कोड और जावास्क्रिप्ट कोड है, इसलिए तरल कोड निष्पादित करने के लिए, मेरे पास है सामग्री-प्रकार को "एप्लिकेशन/तरल" के रूप में सेट करें जो डिफ़ॉल्ट रूप से सामग्री प्रकार को "टेक्स्ट/एचटीएमएल" के रूप में पढ़ता है। इस मामले में माइम प्रकार से मेल खाने के लिए मुझे क्या करना चाहिए। त्रुटि केवल आईई में होती है, क्रोम या फ़ायरफ़ॉक्स में नहीं। यह दूसरों में सही ढंग से काम कर रहा है। –

0

मूल रूप से आप यह नहीं कर सकते हैं। ऐप प्रॉक्सी उन पृष्ठों को बनाने के लिए हैं जो स्क्रिप्ट फाइल नहीं हैं।

गतिशील तरल भागों से एक टुकड़ा में डाल दिया जा सकता है:

एक संभावित रणनीति आप कहां जाना चाहते हैं कि आप मिल जाएगा इस प्रकार है।

<script type="text/javascrpt"> 
    geoShippingConfig = { 
     somevalue: '{{ shop.X }}', 
     etc 
    }; 
</script> 

और जब आप अपना ऐप इंस्टॉल करते हैं तो मुख्य लेआउट में इंजेक्ट करते हैं। विभिन्न ऐप्स इस तरह की चीज करते हैं। आपको ग्राहक को चेतावनी देना है कि आप उस पर जा रहे हैं लेकिन यह काफी सौम्य है। आपको रीफ्रेश बटन या स्निपेट को फिर से इंजेक्ट करने के कुछ तरीके की आवश्यकता होती है और विषय बदलते समय शामिल होते हैं।

फिर आपका ऐप ऐप प्रॉक्सी को कॉल करने के बजाय आपके कोड के साथ स्क्रिप्ट टैग इंस्टॉल करता है। स्क्रिप्ट टैग में यूआरएल में दुकान शामिल है ताकि आप लौटाई गई स्क्रिप्ट फ़ाइल में कोई ऐप विशिष्ट कॉन्फ़िगरेशन कर सकें। आपकी स्क्रिप्ट टैग स्क्रिप्ट लोड पर geoShippingConfig का उपयोग करती है।

+0

ऐप प्रॉक्सी का मतलब विभिन्न सर्वर से स्टोर में बदलाव करने के लिए भी है। मुझे पता है कि स्निपेट बनाना संभव है लेकिन मैं ऐप प्रॉक्सी का उपयोग करके ऐसा करना चाहता हूं और यह बहुत संभव है। यह आईई को छोड़कर अन्य सभी ब्राउज़रों में पहले से ही काम कर रहा है। यदि आप आईई के लिए समाधान प्रदान कर सकते हैं तो यह बेहतर होगा लेकिन कृपया यह न कहें कि यह संभव नहीं है। –

+0

आप क्या नहीं कर सकते हैं माइम प्रकार बदलना है। यदि आप अपनी प्रॉक्सी प्रतिक्रिया की सामग्री-प्रकार को applicationéliquid पर सेट करते हैं तो Shopify इसे ब्राउज़र पर टेक्स्टहेम के रूप में लौटाता है। एक चीज जिसे आप कोशिश कर सकते हैं यह सुनिश्चित करना होगा कि आपके अनुरोध में यूआरएल एक .js एक्सटेंशन है। इससे Shopify को .js.liquid परिसंपत्ति फ़ाइल जैसी प्रतिक्रिया का इलाज करने का कारण हो सकता है। – bknights

2

इस प्रयास करें:

response.addHeader ("स्वीकार", "पाठ/जावास्क्रिप्ट");

स्क्रिप्ट टैग की प्रतिक्रिया में सेट किया गया जहां से इसे कहा जाता है।