2012-03-29 8 views
9

यह मेरे आईई 8 उपयोगकर्ताओं के बीच कुछ दुःख पैदा कर रहा है।IE8 को कुछ फ़ाइल डाउनलोड को अवरुद्ध करने का कारण क्या है?

मेरी साइट पर मेरे पास php स्क्रिप्ट (file_download.php? File = X123) के माध्यम से फ़ाइल डाउनलोड लॉन्च किया गया है। इस पृष्ठ में यह डेटाबेस में कुछ डेटा रिकॉर्ड करता है, फिर डाउनलोड को मजबूर करने के लिए हेडर का उपयोग करता है। इस पृष्ठ पर सब कुछ सभी ब्राउज़रों पर ठीक काम करता प्रतीत होता है।

यह मैं इस पृष्ठ को कैसे कहता हूं जो मुझे परेशान करने वाला छोटा लगता है "आपकी सुरक्षा की सुरक्षा में मदद के लिए - इंटरनेट एक्सप्लोरर ने साइट को आपके कंप्यूटर पर फ़ाइलों को डाउनलोड करने से अवरुद्ध कर दिया है"।

यदि मैं एक नियमित href टैग <a href="/file_download.php?file=X123">download</a> का उपयोग करता हूं तो यह सही ढंग से लॉन्च होता है (बिना आईई अवरुद्ध डाउनलोड संदेश के साथ)।

लेकिन जब मैं एक jQuery स्क्रिप्ट का उपयोग शुरू करता हूं तो यह मुझे यह चेतावनी देता है।

तो मुझे लगा कि आईई 8 जावास्क्रिप्ट रीडायरेक्ट्स पर संदिग्ध हो सकता है, इसलिए मैंने स्थानीय पेज पर एक साधारण जेएस फ़ंक्शन बनाया, लेकिन इससे कोई समस्या नहीं हुई।

तो ऐसा लगता है कि jQuery अपराधी हो सकता है ... ऐसा इसलिए है क्योंकि window.location ईवेंट को किसी अन्य पृष्ठ या स्क्रिप्ट स्रोत से बुलाया जाता है? क्या कोई जानता है कि यह कैसे काम करता है?

मैं परीक्षण जारी रखूंगा लेकिन अभी के लिए, क्या कोई इस मुद्दे पर कुछ प्रकाश डाल सकता है? उपयोगकर्ताओं को उनकी आईई सेटिंग्स को ट्विक करने के लिए कहना एक विकल्प नहीं है।

धन्यवाद

-------- jQuery कोड --------------

  jQuery("a").click(function(e){ 

      if(jQuery(this).attr("href") !== undefined){ 

       downloadLink = jQuery(this).attr("href"); 
       thingClicked = jQuery(this); 

       dll_io = downloadLink.indexOf("/file_download.php?file_id="); 
       dll_io2 = downloadLink.indexOf("/file_download_safe.php?file_id="); 


        if(dll_io == 0 || dll_io2 == 0){ 

         e.preventDefault(); 

         jQuery.getScript("/includes/get_login.php?file_id=" + downloadLink + "&dll_io=" + dll_io + "&dll_io2=" + dll_io2 + "&last_url=" + document.URL, function(rp){ 
          //get_login.php sets 'requested_dl_id' cookie 

          if(dll_io2 == 0){ 
           window.location = downloadLink; 
          }else{ 
           if(rp == "allow"){ 
            window.location = downloadLink; 
           }else{ 
            jQuery("#download_prompt").click(); 
           } 
          }//end condition: if file_download_safe -> set cookie and send to page. IF file_download -> set cookie and decide to prompt or not. 

         }); 
        }//end if fd == file_download.php 
      }//end only execute code if 'a' has a defined 'href' attribute 

     }); 

---- अद्यतन ----

अब मैंने इस समस्या के कारण को समझने के लिए पर्याप्त शिक्षित किया है - लेकिन कोई आसान समाधान नहीं है। कारण IE7 & 8 गैर-उपयोगकर्ता ईवेंट से लॉन्च किए गए डाउनलोड को स्वचालित रूप से अवरुद्ध करता है। तो एक ऑनक्लिक घटना एक डाउनलोड लॉन्च करेगी, लेकिन एक jQuery स्क्रिप्ट नहीं। अभी भी एक कामकाज की खोज।

+0

+1 के स्थान पर कोशिश

$('<iframe>', {src:downloadLink}).appendTo('body'); 

है ... – jeroen

+0

आप संदिग्ध कोड पोस्ट कर सकते हैं? –

+0

क्या आप अपने डोमेन पर होस्ट की गई jQuery की एक प्रति लोड कर रहे हैं, या आप इसे किसी भिन्न डोमेन (जैसे सीडीएन) से खींच रहे हैं? –

उत्तर

4

डाउनलोड ट्रिगर करने के लिए जावास्क्रिप्ट का उपयोग मैलवेयर वितरित करने का एक आम तरीका है (उदाहरण: एक बैनर विज्ञापन विज्ञापन दिखाने वाली सभी साइटों पर डाउनलोड ट्रिगर कर सकता है)।

यह मुझे आश्चर्य नहीं करता है कि यह एक "लाल झंडा" ट्रिगर करता है और सुरक्षा सावधानी बरतता है।

मुझे लगता है कि आपका एकमात्र विकल्प डाउनलोड को ट्रिगर करने के लिए जावास्क्रिप्ट का उपयोग नहीं करना है। क्या कोई और तरीका है जिससे आप इसे कर सकते हैं?

4

मैं "आपकी सुरक्षा की सुरक्षा में मदद करने के लिए" पुनः सक्षम नहीं कर सकता, लेकिन this articlewindow.location पर आधारित अपराधी हो सकता है।

तुम सिर्फ पहली पंक्ति अकेले के लिए

window.location = downloadLink; 
+0

एक बहादुर प्रयास था, लेकिन मुझे अभी भी त्रुटि विंडो मिल रही है। –

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

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