2010-06-28 9 views
9

पर कॉल किया है मेरे पास एक सर्वर है जो example.com पर स्थित है, जो मेरी स्थिर एचटीएमएल फाइलों की सेवा करता है।अजाक्स ने सबडोमेन

मेरे पास api.example.com पर स्थित एक जेसन सेवा है जो चेरीपी के साथ पाइथन चल रही है।

उपयोगकर्ता example.com का अनुरोध करता है और सूचकांक HTML पृष्ठ प्राप्त करता है। उस पृष्ठ पर मैं json सेवा के साथ jjery के साथ AJAX अनुरोध करता हूं। document.domain रिटर्न example.com

 $.ajax({ 
     type: 'GET', 
     url: 'http://api.example.com/resource/', 
     dataType: 'json', 
     success: successCallback, 
     error: errorHandler 
    }); 

हालांकि, मैं नहीं प्रतिक्रिया शरीर फ़ायरबग में ajax अनुरोध के लिए देख सकते हैं। इससे मुझे विश्वास होता है कि ब्राउज़र (एफएफ) इसका समर्थन नहीं करता है।

इसे प्राप्त करने के लिए सबसे अच्छे तरीके क्या हैं? यदि संभव हो तो मैं example.com के लिए apache बैकएंड पर किसी भी प्रॉक्सीइंग का उपयोग नहीं करना चाहूंगा।

+0

विभिन्न सबडोमेन = अलग डोमेन –

+0

हां। लेकिन example.com api.example.com के लिए मूल डोमेन है, इसलिए इन यूआरएल के बीच संबंध माता-पिता होना चाहिए - बच्चे बच्चे-बच्चे नहीं। – Baversjo

उत्तर

4

आप कॉलबैक = जोड़कर JSONP का भी उपयोग कर सकते हैं? यूआरएल के अंत तक। jQuery पहले से ही जानता है कि इन प्रकार के अनुरोधों को कैसे संभालना है, लेकिन कॉलबैक पैरा को संभालने के लिए कुछ सर्वर पक्ष परिवर्तनों की आवश्यकता होती है।

0

जहाँ तक मुझे पता है, आप AJAX क्रॉस-डोमेन नहीं कर सकते हैं।

Why is cross-domain Ajax a security concern?

हालांकि मुझे लगता है कि आप एक IFRAME वैकल्पिक हल

Cross Sub Domain Javascript

+2

लेकिन यह क्रॉस डोमेन नहीं है! – Baversjo

+0

मुझे लगता है कि आप एक IFRAME वर्कअराउंड http://www.tomhoppe.com/index.php/2008/03/cross-sub-domain-javascript-ajax-iframe-etc/ – SAGExSDX

+1

उसी मूल नीति के अनुसार कर सकते हैं , यह एक अलग डोमेन है: http://en.wikipedia.org/wiki/Same_origin_policy – wsanville

0

AJAX अनुरोध केवल एक ही डोमेन पर समर्थित है कर सकता है। हालांकि, आप अपनी पसंदीदा स्क्रिप्टिंग भाषा में एक http प्रॉक्सी लिख सकते हैं और उस http प्रॉक्सी पर कॉल कर सकते हैं। आप php में लिखे गए AJAX प्रॉक्सी पर इस छोटे tutorial को देख सकते हैं।

+0

प्रॉक्सी का उपयोग उच्च-स्तरीय ऐप्स के लिए एक अच्छा समाधान नहीं है। –

-1

डोमेन को उप डोमेन के बजाय शीर्ष स्तर डोमेन बनाने के लिए दस्तावेज़.डोमेन का उपयोग करें।

document.domain="example.com" 

यह एमडीएन पर described in detail है।

+0

यह – Baversjo

+3

से ऊपर वर्णित शीर्ष स्तर डोमेन पर पहले से सेट है .domain केवल iframes के लिए काम करता है, अजाक्स अनुरोध नहीं – Nathan

0

अगर काम नहीं करता है, भी अपने डोमेन के पृष्ठ में अपने document.domain बदलने अपने उप डोमेन अपना डोमेन बदल, इस

<script type="text/javascript">  
    document.domain = 'example.com'; 
</script> 

तरह की कोशिश करो।