2012-11-25 19 views
7

मैं अपनी वेबसाइट पर कुछ सुंदर मूल jQuery AJAX सामान कर रहा हूं, और मुझे परेशानी का बोतलबंदता है।jQuery AJAX HTTPS अनुरोध नहीं करेगा

यहाँ प्रासंगिक कोड है:

$(document).ready(function() { 
    $("#getdatabutton").click(function() { 
     $.ajax({ 
      url: "/jsontest/randomdata", 
      type: "get", 
      data: [{name:"ymax", value:$("#randomgraph").height()}, 
        {name:"count", value:$("#countinput").val()}, 
        {name:"t", value:Math.random()}],  
      success: function(response, textStatus, jqXHR) { 
       data = JSON.parse(response); 
       updateGraph(data); 
       $("#result").html(response); 

       if(data["error"] == "") { 
        $("#errorbox").html("None"); 
       } 
       else { 
        $("#errorbox").html(data["error"]); 
       } 
      }, 
      error: function(jqXHR, textStatus, errorThrown) { 
       $("#errorbox").html(textStatus + " " + errorThrown); 
      } 
     }); 
    }); 
}); 

पेज HTTPS पर लोड किया जाता है, लेकिन XMLHttpRequests HTTP पर बाहर जाने के लिए दिखाई देते हैं।

मैं भी संपूर्ण url (https://larsendt.com/jsontest/randomdata) करने के लिए यूआरएल को बदलने का प्रयास किया है, और यह अभी भी मेरी साइट के HTTP संस्करण के लिए अनुरोध भेजता है।

स्वाभाविक रूप से, चूंकि अनुरोध एक अलग प्रोटोकॉल पर जा रहा है, इसलिए AJAX कॉल विफल रहता है (क्रॉस-डोमेन और वह सब)।

क्रोम की रिपोर्ट के अनुसार:

The page at https://larsendt.com/jsontest/ displayed insecure content from http://larsendt.com/jsontest/randomdata/?ymax=500&count=32&t=0.08111811126582325. 

केवल अन्य प्रासंगिक जानकारी मैं के बारे में सोच सकता है मैं होने nginx एक 301 http://larsendt.com से https://larsendt.com पर पुन: निर्देशित कर रहा हूँ, लेकिन मैं नहीं दिख रहा है कि कैसे है कि होगा कि कुछ तोड़ो (मुझे विश्वास है कि यह काफी मानक अभ्यास है)।

यदि आप लाइव डेमो चाहते हैं, तो टूटा संस्करण अभी भी https://larsendt.com/jsontest पर है।

वैसे भी, अग्रिम धन्यवाद।

+0

क्या आप अपनी पोस्ट का शीर्षक बदलना चाहते हैं ताकि इस प्रश्न वाले लोग इस पृष्ठ पर नहीं उतर सकें .. – brayne

उत्तर

13

यूआरएल फिक्सिंग का प्रयास करें ताकि आपके सर्वर रीडायरेक्ट करने के लिए

url: "/jsontest/randomdata/" // there was a missing trailing/

// i.e. https://larsendt.com/jsontest/randomdata?ymax=500&count=32&t=0.9604179110508643 
// was going to https://larsendt.com/jsontest/randomdata/?ymax=500&count=32&t=0.9604179110508643 
+0

आह! उसने ऐसा किया बहुत बहुत धन्यवाद! –

+0

अच्छा बिंदु, नूड। यह शायद सर्वर में भी तय किया जा सकता है। आईआईआरसी, अपाचे (और शायद अन्य) में लापता पिछली स्लैश को संभालने के लिए कई अलग-अलग दृष्टिकोण हैं। मैं कोई विशेषज्ञ नहीं हूं लेकिन एक बार इसे पढ़ा (लगभग 10 साल पहले!)। –

+0

यह मेरी समस्या हल हो गया है। बहुत अच्छा मुद्दा। –

1

301 स्थायी रीडायरेक्ट हो रहा हो सकता है नहीं है। फिडलर को चलाने और परिणाम कॉलम देखने के लिए। आमतौर पर 200 कोड, लेकिन मैंने एक 301 कोड देखा।

https jQuery ajax कॉल http के लिए पुनः निर्देशित किया गया था, मिश्रित सामग्री त्रुटि के कारण।

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