एक http पृष्ठ पर https का उपयोग करके अजाक्स


101

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

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

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

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


4
क्यों नहीं ajax लोडिंग पेज प्रोटोकॉल से मेल खाता है?
scheibk

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

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

4
उदाहरण के लिए एक अधिक डायनेमिक चेकआउट फॉर्म जो कि
पेपाल

जवाबों:


58

सर्वर से Access-Control-Allow-Origin हेडर जोड़ें

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

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


7
शानदार प्रतिक्रिया - लेकिन ओपेरा (बिल्कुल नहीं) और इंटरनेट एक्सप्लोरर (संस्करण 8 के बाद से समर्थित) caniuse.com/#search=cors
सिमोनसिमिटी

1
ओपेरा की तरह लगता है अब यह समर्थन करता है: en.wikipedia.org/wiki/ ... केवल ओपेरा मिनी हालांकि नहीं ...
गीताकार

11

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

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

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

व्यक्तिगत रूप से, मैं http: // पृष्ठ को https: // एक के रूप में पुनर्निर्देशित करूंगा


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

शायद आपको URL में कॉलबैक पैरामीटर
जेवियर

@ user135863 क्या आप पहले स्थान पर JSONP का समर्थन करने के लिए क्वेरी भेज रहे हैं ?
लेह ब्रीनेकी

1
मेरी पवित्रता की खातिर मैं आपके अंतिम विकल्प के साथ जाने वाला हूं ... सरल पुनर्निर्देशन के लिएhttps:
Dzeimsas Zvirblis

9

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

JSON कॉलबैक आपको इससे बच सकते हैं।


JSON कॉलबैक पर मृत लिंक :(
Kubie

@ क्यूबी यह उत्तर कल का दस साल पुराना है, और टूटे हुए लिंक हैं, इसलिए हम पूछते हैं कि प्रश्नों में एक को जीवित करने के लिए पर्याप्त जानकारी शामिल है।
सिजयोज़

बस 10 साल हा देखा ... और हाँ अच्छी बात है। ठीक है, अगर मैं कुछ भी
पाऊं

4

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

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

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

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


2

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


2
इस सूत्र को पढ़ने के बाद, मैं JSONP dslreports.com/forum/r21425467-IFrame-With-HTTPS-on-HTTP-Page
JGFMK

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

2

यहाँ मैं क्या कर रहा हूँ:

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


यह किया जा सकता है, लेकिन P3P हेडर सेट करना सुनिश्चित करें यदि आपको iFrame से सत्र कुकीज़ की आवश्यकता है ... अन्यथा MSE "nu uh uh"
कहेगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.