2013-12-12 8 views
7

फ़ायरफ़ॉक्स में, जब जावास्क्रिप्ट एक पृष्ठ है कि https पर होस्ट की है से एक http सर्वर से एक CORS अनुरोध करने के लिए प्रयास करता है, यह एक त्रुटि फेंक देगा:पकड़ने CORS त्रुटि 'अवरोधित लोड हो रहा है सक्रिय सामग्री मिश्रित'

Blocked loading mixed active content 

मैं इन त्रुटियों को पकड़ना चाहता हूं, लेकिन मैं यह नहीं समझ सकता कि कैसे।

try { 
    $.get("http://public.opencpu.org/ocpu/library/").fail(function(xhr, err){ 
    console.log("Server error:" + xhr.responseText); 
    }); 
} catch(e){ 
    console.log(e.message);; 
} 

लेकिन buth xhr.responseText और e.message रिक्त स्ट्रिंग हैं (शायद इसलिए कि $.ajax एसिंक्रोनस रूप से होता है): E.g.I jQuery के साथ कुछ इस तरह की कोशिश की। मैं वास्तविक त्रुटि संदेश को कैसे पकड़ सकता हूं जो कहता है: अवरुद्ध लोडिंग मिश्रित सक्रिय सामग्री ...

उत्तर

3

आप उस सटीक संदेश को नहीं पकड़ सकते हैं। यह केवल कंसोल पर लॉग इन होगा, लेकिन उपयोगकर्ता के लिए उपलब्ध नहीं है।

सादा एक्सएचआर का उपयोग करते समय, .open() कॉल एक अपवाद फेंक देगा जिसमें .result === 0x805e0006 है। इसके अलावा, ex.toString() में nsresult: "0x805e0006 (<unknown>)" होगा।

jQuery, jqXHR की .statusText में ex.toString() डालता है, तो आप मिश्रित सामग्री के कारण अवरुद्ध अनुरोधों के लिए निम्नलिखित की जांच कर सकता है:

xhr.statusText.indexOf('nsresult: "0x805e0006 (<unknown>)"') > -1 

उत्सुक के लिए: 0x805e0006NS_ERROR_CONTENT_BLOCKED होना चाहिए (सी ++ मैक्रो मान) ।

+0

तो आप जो कह रहे हैं वह है कि $ .ajax कॉल को अवरुद्ध क्षेत्र के साथ बढ़ाया जाना चाहिए। – Rhyous

+0

मुझे jquery में कोड की रेखा मिली जहां xhr.open कहा जाता है। क्रोम में, मुझे अपवाद नहीं मिल रहा है। इसके बजाय xhr.send() पर अपवाद लॉग है, लेकिन xhr.statusText खाली रहता है। – Rhyous

0

आप एक प्रोटोकॉल रिलेटिव URL का उपयोग कर पहली जगह में त्रुटि को रोकने के लिए सक्षम होना चाहिए:

$.get("//public.opencpu.org/ocpu/library/") 

, http या https का उपयोग करता है अपने पृष्ठ संदर्भ के आधार पर। public.opencpu.org दोनों का समर्थन करता है, इसलिए कोई समस्या नहीं है।

+0

मुझे पता है, लेकिन यह समस्या नहीं है। उपयोगकर्ता यूआरएल निर्दिष्ट करना है। – Jeroen

+0

@ जेरोइन जो आपके प्रश्न में उल्लेख करने में मददगार होगा। वैसे भी, मनमानी यूआरआई दिए गए, आप कैसे सुनिश्चित करते हैं कि यूआरआई ए) समर्थन करता है और बी) सीओआरएस अनुरोधों को आपके स्थान पर पहली बार अनुमति देता है? – janfoeh

+0

मैं नहीं करता, लेकिन यह 'असफल' हैंडलर द्वारा पकड़ा जा रहा है। – Jeroen

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