2011-02-18 7 views
5

भागों

मैं दो Pylons सर्वर के खिलाफ विकासशील कर रहा हूँ और स्थानीय स्तर पर परीक्षण सर्वर केवल एचटीएमएल 5/jQuery/क्रोम में बंदरगाह में मतभेद के बीच ajax कॉल नहीं कर सकते। एक सर्वर पोर्ट 5000 पर है और सर्वर कहा जाता है। दूसरा पोर्ट 7000 पर है। उत्तरार्द्ध एक कुकी बनाता है जो उसी सर्वर को निर्दिष्ट करता है जैसा कि पूर्व सर्वर द्वारा उपयोग किया जाता है। अनिवार्य रूप से, पहला सर्वर उपयोगकर्ता का प्रतिरूपण करने के लिए दूसरे सर्वर द्वारा प्रदान किए गए प्रमाण-पत्रों का उपयोग करता है।ढेर

पहला सर्वर इसकी प्रतिक्रिया में एक ऑथ टोकन (एक कुकी, वास्तव में) खोजने की अपेक्षा करता है। रनवे पर वातावरण। जब मैं पोर्ट 5000 पर सर्वर पर सर्वर पर प्रमाणित करता हूं और पोर्ट 5000 पर किसी सेवा के लिए ब्राउजर करता हूं, तो बाद वाला सर्वर पूर्व और ऐप द्वारा बनाई गई कुकी का उपयोग करता है।

मलहम में फ्लाई यह है कि पहला सर्वर एक HTML5 ऐप बनाता है जो दूसरे सर्वर पर AJAX कॉल का उपयोग करता है, और मुझे AJAX कॉल में कुकी को शामिल नहीं किया जा सकता है। मेरा मानना ​​है कि क्रोम (जिस ब्राउज़र का हम उपयोग कर रहे हैं/HTML5 समर्थन कारणों के लिए जरूरी है) क्रॉस डोमेन कारणों के लिए कुकी भेजने से इंकार कर देता है: foo.net:7000 से foo.net:5000 पर जाकर क्रॉस डोमेन माना जाता है।

ओह, और AJAX कॉल jQuery के माध्यम से है।

सवाल

वहाँ एक ही डोमेन लेकिन एक अलग बंदरगाह में एक सर्वर के लिए एक ही डोमेन में एक बंदरगाह पर बनाई गई एक एचटीएमएल 5 एप्लिकेशन से किसी ajax कॉल करने के लिए कोई तरीका है?

मैं क्या करने की कोशिश की या हाथ

से बाहर त्यागें मैं नहीं मानता कि मैं dynamic script tag insertion उपयोग कर सकते हैं, क्योंकि मैं जावास्क्रिप्ट से कॉल कर रहा हूँ और एचटीएमएल अन्य जावास्क्रिप्ट से रनटाइम पर क्लाइंट पर उत्पन्न होता है है। कम से कम, मुझे नहीं लगता कि यह एक वांछनीय समाधान है।

मुझे विश्वास नहीं है कि Access-Control-Allow-* लागू है क्योंकि मैं क्लाइंट से सर्वर पर जा रहा हूं, दूसरी तरफ नहीं।

मैंने यह on jQuery and ports in ajax calls देखा है। मैंने this भी देखा है।

मुझे same-origin policy के बारे में पता है।

और this does not work

उत्तर

1

माइकल के साथ सहमत हैं कि सबसे आसान समाधान JSONP है। लेकिन JSONP में भी आपको अपने सर्वर को कॉन्फ़िगर करने की आवश्यकता है जैसे कि यह JSONP का समर्थन करता है। कई सर्वर अपने डेटा को सुरक्षित और ध्वनि रखने के लिए इनकार करते हैं। JSONP आपके सर्वर को प्रारूप में डेटा भेजने की अपेक्षा करता है जिसे वैध JSON के रूप में मूल्यांकन किया जा सकता है। लेकिन यह हर JSONP अनुरोध और प्रतिक्रिया में मामला नहीं है। तो, बस इसके लिए बाहर देखो।

1

इसका सबसे सरल समाधान JSON/P का उपयोग करना है। मेरी इच्छा है कि इसे पूरा करने के लिए एक आसान, नरम तरीका था, लेकिन मुझे निश्चित रूप से एक नहीं मिला है।