2011-10-06 13 views
14

मेरे पास http:// साइट है जो किसी तृतीय पक्ष JSON API तक पहुंचने की आवश्यकता है जो https:// साइट पर उजागर है। मैं Ways to circumvent the same-origin policy के माध्यम से पढ़ा है, लेकिन यह तरीकों का वर्णन किया क्या मेरे लिए उपयुक्त नहीं हैं लगता है:किसी तृतीय पक्ष https साइट के लिए समान-मूल नीति को कैसे रोकें?

  1. document.domain विधि - केवल उप डोमेन पर काम करता है।
  2. क्रॉस-ओरिजिनल संसाधन साझाकरण विधि - सर्वर सहयोग की आवश्यकता है।
  3. window.postMessage विधि - ऐसा लगता है कि पॉपअप विंडो खोलने की आवश्यकता है?
  4. रिवर्स प्रॉक्सी विधि - एक संभावित समाधान, लेकिन सेटअप करने में थोड़ा मुश्किल लगता है।
  5. http://anyorigin.com - एसएसएल का समर्थन नहीं करता है।

क्या यह है? क्या मुझे समाधान 4 लागू करना चाहिए, जो जटिल लगता है, या क्या मुझे कुछ याद आ रहा है?

+3

आप अपने खुद के डोमेन और फिर पर एक नियमित रूप से पीएचपी पेज के साथ अन्य साइट से परिणाम कर्ल नहीं कर सकते उस PHP पृष्ठ से JSON पकड़ो? –

+0

[JSONP] (http://en.wikipedia.org/wiki/JSONP) यहां काम नहीं करेगा? – jwueller

+0

मुझे यकीन है कि anyorigin.com एसएसएल का समर्थन करता है। 'Https: // test.kems.net /' लाने का प्रयास करें, उदाहरण के लिए - यह ठीक काम करता है। –

उत्तर

12

क्षमा की एक वास्तविक बुनियादी writeup है, ऐसा लगता है कि anyorigin.com समर्थन https करता है।

कारण मैंने सोचा कि ऐसा नहीं है, क्योंकि API in question जेएसओएन लौटाता है, और मैंने सोचा कि मुझे वास्तव में एक सादा पाठ प्रतिक्रिया मिलेगी (जैसा कि google.com पर anyorigin.com का उपयोग करने के साथ मेरे परीक्षणों में)। जब यह सिर्फ object लौटा, तो मुझे लगा कि कुछ टूटा हुआ था।

ऐसा लगता है कि ऑब्जेक्ट केवल पार्स किए गए JSON को वापस देता है, इसलिए मुझे जाना अच्छा लगता है!

अद्यतन - anyorigin.com कुछ https साइटों के साथ काम करने में कुछ ही हफ्तों के बाद मैं इस पोस्ट करना बंद कर दिया, तो मैं आगे चला गया और whateverorigin.org, एक खुला स्रोत विकल्प लिखा anyorigin करने के लिए।

+0

@RobW - कृपया जिथब पर एक समस्या खोलें। मैं शुक्रवार को इसकी जांच करूंगा (जल्द ही कुछ भी वादा नहीं कर सकता) - https://github.com/ripper234/Whatever-Origin – ripper234

+0

उन तरीकों से अनुरोध करने पर आधारित रिमोट सर्वर अलग-अलग सामग्री देता है, तो वे विधियां काम नहीं करेंगी। उदाहरण के लिए यूट्यूब एक वीडियो के लिए एक वेबपृष्ठ देता है जिसमें से आप एमपी 4 के लिए प्लेबैक यूआरएल कह सकते हैं जो कॉलर से इस्तेमाल होने पर कॉलर से उपयोग किए जाने पर ही काम करेगा (.mp4 फ़ाइल के रूप में लाने के लिए कहें) (जब कॉलर है प्रॉक्सी) –

+0

** मैंने इस प्रश्न के लिए यहां एक उत्तर लिखा: [jQuery AJAX के साथ क्रॉस डोमेन HTML पृष्ठ लोड हो रहा है] (http://stackoverflow.com/questions/15005500/loading-cross-domain-html-page-with -jquery-AJAX/17299796 # 1729 9 7 9 6) ** - _ अंतिम वाला, https_ का समर्थन करता है – jherax

0

JSONP आपकी सूची में होना चाहिए, और उच्चतर होना चाहिए। काफी मानक। इसके लिए सर्वर सहयोग की आवश्यकता है, लेकिन अधिकांश एपीआई को पता होना चाहिए कि वे क्या कर रहे हैं और इसका समर्थन करते हैं।

here यह कैसे काम करता

3

आप अजाक्स-क्रॉस-उत्पत्ति को एक jQuery प्लगइन का उपयोग कर सकते हैं। इस प्लगइन के साथ आप jQuery.ajax() क्रॉस डोमेन का उपयोग करते हैं।

यह उपयोग करने के लिए बहुत सरल है:

$.ajax({ 
     crossOrigin: true, 
     url: url, 
     success: function(data) { 
      console.log(data); 
     } 
    }); 

आप यहाँ और अधिक पढ़ सकते हैं: http://www.ajax-cross-origin.com/

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