2011-08-04 9 views
6

मेरे पास कुछ फ़ील्ड के साथ एक फॉर्म है। जब आप फॉर्म जमा करते हैं, तो सर्वर रीडायरेक्ट (HTTP 302) के साथ प्रतिक्रिया करता है।आईई रीडायरेक्ट का पालन नहीं करता है, "इंटरनेट एक्सप्लोरर वेबपृष्ठ प्रदर्शित नहीं कर सकता"

जब फॉर्म सबमिट किया गया है, तो <input type=file> फ़ील्ड है, तो आईई रीडायरेक्ट का पालन नहीं करता है, बल्कि इसके बजाय एक त्रुटि देता है: "इंटरनेट एक्सप्लोरर वेबपृष्ठ प्रदर्शित नहीं कर सकता"।

यदि वहाँ कोई<input type=file> क्षेत्र है, तो यह रीडायरेक्ट का पालन के रूप में उम्मीद करता है।

HTTP 302 प्रतिक्रिया बिल्कुल दोनों मामलों में समान है, केवल प्रतिक्रिया के टाइमस्टैम्प से भिन्न होती है।

मैं इसे IE8 और IE9 में अनुभव कर रहा हूं। (मैंने निचले संस्करणों की कोशिश नहीं की है)। फ़ायरफ़ॉक्स, क्रोम, ओपेरा और सफारी सभी उम्मीद के अनुसार रीडायरेक्ट का पालन करते हैं।

नोट्स:

  • प्रपत्र विशेषता enctype="multipart/form-data" है।
  • यह एसएसएल
  • पर हो रहा है रीडायरेक्ट URL के मुकाबले किसी भिन्न प्रोटोकॉल, होस्ट या पोर्ट पर नहीं है, जिस पर फॉर्म पोस्ट किया गया है या होस्ट किया गया है।
  • जब मैं Fiddler2 के साथ HTTP ट्रैफ़िक का निरीक्षण करता हूं, तो समस्या गायब हो जाती है और आईई व्यवहार करता है।
+0

विषम। एक 302 रीडायरेक्ट ब्राउज़र को लक्ष्य पृष्ठ पर एक GET जारी करने का कारण बनता है, जो अपलोड की गई फ़ाइल (यदि कोई हो) खो देता है। शायद आईई की त्रुटि इस का एक संकेत है (और आईई हमेशा गड़बड़ त्रुटि संदेश है)। यह समझ में नहीं आता है कि फिडलर चीजों को "ठीक" क्यों करेगा। –

+0

@Marc, सर्वर पर यह एक रेल ऐप है। यह अनुरोध स्वीकार करता है, डेटाबेस में फ़ाइल और सामान बचाता है, फिर किसी अन्य पृष्ठ पर रीडायरेक्ट के साथ प्रतिक्रिया देता है। इसे इस नए पेज पर एक जीईटी अनुरोध जारी करना चाहिए, लेकिन ऐसा नहीं है। – nicholaides

उत्तर

5

क्या आपका आंशिक URL या पूर्ण URL (होस्ट, प्रोटोकॉल इत्यादि के साथ) पर रीडायरेक्ट है? मैंने PHP में बहुत से उदाहरण देखे हैं जहां 302 के साथ रीडायरेक्ट है जिसमें पूर्ण http://server.dom/path/to/file नहीं है, इसे आईई द्वारा अनदेखा या उलझाया जाएगा। रेल में, राउटर में foo_path और foo_url के बीच यह अंतर हो सकता है।

+0

धन्यवाद, मैं कोशिश करने जा रहा हूं। – nicholaides

+0

धन्यवाद, यह काम करने लग रहा था। मुझे लगता है कि यह कॉन्फ़िगरेशन कहां रखना है/w/HTTPS – nicholaides

3

बस को भी यही समस्या के लिए इस में जोड़ने के लिए:

आईई कैसे हैडर आदेश बनाई है के बारे में काफी सख्त रहा है। मेरे आवेदन के साथ संघर्ष कर रहा था:

header("location:http://www.test.co.uk/test/test.php"); 

या

header("location:test.php"); 

लेकिन जब आदेश के लिए संशोधन किया गया था काम करना शुरू किया:

header("Location: http://www.test.co.uk/test/test.php"); 
6

प्रश्न 3 साल पुराना है, लेकिन मैं हाल ही में में भाग यह समस्या स्वयं और कहीं भी सही जवाब नहीं मिला। यहां स्वीकृत उत्तर के रूप में चिह्नित उत्तर वास्तव में कुछ भी जवाब नहीं देता है।

क्या एक नई पहल की मुझे 302 प्रतिक्रिया के लिए निम्न हेडर को जोड़े था के लिए:

Connection: close 

मैं पूर्ण URL के साथ एक अन्य साइट के लिए पुनः निर्देशित किया गया था, और IE की तरह बाद में भेजकर कनेक्शन अनुकूलन करने के लिए कोशिश कर रहा है यह लग रहा है इसे फिर से खोलने के बिना उसी टीसीपी स्ट्रीम पर अनुरोध करता है, लेकिन यह पता लगाने के लिए पर्याप्त स्मार्ट नहीं है कि साइट हेडर में स्पष्ट "कनेक्शन" निर्देश के बिना अलग है।

यह कम से कम IE10 और IE11 में होता है, और अन्य किसी भी ब्राउज़र में यह समस्या नहीं है।

+0

से निपटने के दौरान मेरे लोड बैलेंसर "302 रीडायरेक्ट" प्रतिक्रियाओं को फिर से लिखने के तरीके के साथ एक मुद्दा था? –

+1

@ मैशिट यह कॉन्फ़िगरेशन नहीं है - यह कोड है। ASP.Net अनुप्रयोग में, यह होगा: 'System.Web.HttpContext.Current.Response.AddHeader (" कनेक्शन "," बंद ");' पीएचपी के मामले में, यह कुछ इस तरह होगा: 'हेडर (' कनेक्शन: क्लोज़ ') ' हालांकि अब तक मुझे यह संस्करण 8 से पहले आईआईएस में समस्या है। – Cozzamara

+0

हाँ। मैंने PHP में इस तरह हेडर सेट अप करने का प्रयास किया। लेकिन –

संबंधित मुद्दे