2009-07-09 16 views
96

मेरी साइट http और https प्रोटोकॉल का उपयोग करती है; यह सामग्री को प्रभावित नहीं करता है। मेरी साइट jQuery AJAX कॉल का उपयोग करती है, जो पृष्ठ पर कुछ क्षेत्रों को भी भरती है।एक पृष्ठ पर https का उपयोग करके अजाक्स

अब, मैं https भर ajax कॉल करना चाहते हैं। (कृपया मुझसे पूछें क्यों नहीं :) :) जब मैं https प्रोटोकॉल वाले किसी पृष्ठ पर हूं, AJAX अनुरोध काम कर रहे हैं। जब मैं http प्रोटोकॉल के साथ एक पृष्ठ पर हूँ, मैं एक जावास्क्रिप्ट त्रुटि मिलती है: प्रतिबंधित यूआरआई पर पहुंच अस्वीकृत

मुझे पता है कि यह एक क्रॉस डोमेन समस्या (वास्तव में, यह एक क्रॉस प्रोटोकॉल समस्या है) है, और मैं पता है कि मुझे वर्तमान पृष्ठ पर AJAX कॉल में एक ही प्रोटोकॉल का उपयोग करना चाहिए।

फिर भी, मैं https हो, और उन्हें एक पेज है कि अधिक परोसा गया था http पर कॉल करने के लिए सभी ajax कॉल करना चाहते हैं। क्या यह प्राप्त करने के लिए कोई कामकाज है (कुछ जेसन/प्रॉक्सी समाधान?), या यह असंभव है?

+4

लोडिंग पृष्ठ प्रोटोकॉल पर AJAX से मेल नहीं खाते क्यों? – scheibk

+41

उन्होंने विशेष रूप से कहा "कृपया मुझसे क्यों न पूछें।" –

+0

आपको एचटीटीपीएस के साथ AJAX की आवश्यकता क्यों है ..... – Miles

उत्तर

2

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

+2

इस धागे को पढ़ने के बाद, मैं JSONP के साथ रहूंगा http://www.dslreports.com/forum/r21425467-IFrame-With-HTTPS-on-HTTP- पेज – JGFMK

+0

यह किया जा सकता है, लेकिन पी 3 पी हेडर सेट करना सुनिश्चित करें आपको iFrame से सत्र कुकीज़ की आवश्यकता है ... अन्यथा एमएसई कहेंगे "nu uh uh" – srquinn

8

http://example.com/https://example.com/ (जो, के रूप में होस्ट शीर्ष लेख नहीं भेजा गया है, कि आईपी के लिए डिफ़ॉल्ट का जवाब) से एक अलग VirtualHost को हल कर सकते हैं, तो दो अलग-अलग डोमेन और इस प्रकार जे एस प्रतिबंध crossdomain के अधीन माना जाता है।

JSON callbacks आप इससे बचने के दे सकते हैं।

11

JSONP का प्रयास करें।

सबसे जे एस पुस्तकालयों यह बस के रूप में अन्य AJAX कॉल के रूप में आसान है, लेकिन आंतरिक रूप से एक iframe का उपयोग क्वेरी करना है।

अगर आप अपने पेलोड के लिए JSON उपयोग नहीं कर रहे हैं, तो आप iframe के इर्दगिर्द अपने स्वयं के तंत्र रोल करना होगा।

व्यक्तिगत रूप से, मैं सिर्फ अनुप्रेषित चाहते हैं http फार्म https: // पेज: // एक

+1

hmm मैंने jquery के साथ jquery .ajax की कोशिश की है: 'jsonp_callback' विकल्प सेट, लेकिन फिर भी जेएस त्रुटि। – user135863

+0

शायद आपको यूआरएल – Javier

+0

@ user135863 में कॉलबैक पैरामीटर जोड़ना होगा, क्या आप अंत में बिंदु * समर्थन * JSONP को क्वेरी भेज रहे हैं? –

4

चेक बाहर खुले स्रोत फोर्ज परियोजना। यह एक जावास्क्रिप्ट टीएलएस कार्यान्वयन प्रदान करता है कुछ फ्लैश के साथ वास्तविक क्रॉस-डोमेन अनुरोध को संभालने के लिए:

http://github.com/digitalbazaar/forge/blob/master/README

संक्षेप में, फोर्ज एक https साइट के लिए http से लोड एक वेब पेज से XMLHttpRequests बनाने के लिए आप सक्षम हो जाएगा । क्रॉस-डोमेन अनुरोधों को सक्षम करने के लिए आपको अपने सर्वर के माध्यम से एक फ्लैश क्रॉस-डोमेन नीति फ़ाइल प्रदान करने की आवश्यकता होगी। यह कैसे काम करता है इसके बारे में अधिक गहराई से स्पष्टीकरण प्राप्त करने के लिए README के ​​अंत में ब्लॉग पोस्ट देखें।

हालांकि, मुझे यह उल्लेख करना चाहिए कि फोर्ज दो अलग-अलग https-domains के बीच अनुरोधों के लिए बेहतर अनुकूल है। इसका कारण यह है कि एक संभावित एमआईटीएम हमला है। यदि आप एक गैर-सुरक्षित साइट से जावास्क्रिप्ट और फ्लैश लोड करते हैं तो इसे समझौता किया जा सकता है। सबसे सुरक्षित उपयोग इसे किसी सुरक्षित साइट से लोड करना है और फिर अन्य साइटों (सुरक्षित या अन्यथा) तक पहुंचने के लिए इसका उपयोग करना है।

56

सर्वर

Access-Control-Allow-Origin: https://www.mysite.com 

http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

+7

पर सरल रीडायरेक्ट - लेकिन कुछ उपयोग किए गए ब्राउज़र जैसे ओपेरा (बिल्कुल नहीं) और इंटरनेट एक्सप्लोरर (समर्थित) द्वारा समर्थित नहीं है संस्करण 8 के बाद से) http://caniuse.com/#search=cors – SimonSimCity

+1

ऐसा लगता है कि ओपेरा अब इसका समर्थन करता है: http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing#Browser_support केवल ओपेरा मिनी नहीं है ... – rednaw

2

यहाँ से पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति शीर्ष लेख जोड़ें है कि मुझे क्या करना:

डेटा आप पोस्ट करने के लिए चाहते हैं के साथ एक छिपे हुए iFrame उत्पन्न । चूंकि आप अभी भी IFrame को नियंत्रित करते हैं, वही मूल लागू नहीं होता है। फिर उस आईफ्रेम में एसएसएल पेज में फॉर्म जमा करें। एसएसएल पेज फिर स्थिति संदेशों के साथ एक गैर-एसएसएल पेज पर रीडायरेक्ट करता है। आपके पास आईफ्रेम तक पहुंच है।

+0

यह किया जा सकता है, लेकिन यदि आप iFrame से सत्र कुकीज़ की आवश्यकता है तो पी 3 पी हेडर सेट करना सुनिश्चित करें ... अन्यथा एमएसई "nu uh uh" कहेंगे – srquinn

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

  • कोई संबंधित समस्या नहीं^_^