2010-07-01 16 views
8

मुझे कुछ वास्तव में उलझन में मिल रहा है, यही कारण है कि AJAX अनुरोध एक ही डोमेन तक सीमित हैं? इसके पीछे तर्क क्या है?AJAX अनुरोध एक ही डोमेन तक सीमित क्यों हैं?

मैं फ़ाइलों को बाहरी स्थानों से भी XMLHTTP अनुरोधों बनाने सर्वर का अनुरोध के साथ किसी भी समस्या नहीं दिख रहा है हो और ठीक बाहरी स्थानों के लिए पोस्ट करने के लिए लग रहे हैं। अगर एक वेबसाइट पर अमल कर सकता है AJAX के किसी भी डोमेन वे ग्राहक के पक्ष चाहता था करने के लिए कहता है, यह एक गंभीर खतरा बना हुआ है - http://en.wikipedia.org/wiki/Same_origin_policy

+0

शायद यह है कि आप पासवर्ड कुछ फर्जी सर्वर पर नहीं भेजे जाएंगे ... – Alxandr

+0

लेकिन जिस वेबसाइट पर आप हैं, उन्हें एक स्क्रिप्ट के माध्यम से अपना पासवर्ड भेजना होगा, और वे सैद्धांतिक रूप से पहले ही इसे जानते हैं ताकि वह व्यर्थ लगे ? –

उत्तर

17

चित्र इस:

तुम मेरे शानदार वेबसाइट www.halfnakedgirls.com पर आते हैं। आपको मानव शरीर विज्ञान पर तकनीकी दस्तावेज की तरह दिखने में मजा आता है, लेकिन आपकी पीठ के पीछे, जावास्क्रिप्ट की कुछ पंक्तियां किसी अन्य डोमेन से कुछ अनुरोध निष्पादित कर रही हैं, आइए www.yourpaypallike.com कहें।

अनुरोध http://www.yourpaypallike.com/account/[email protected]&amount=984654 या http://www.mymailprovider.com/mails/export?format=csv की तरह।

क्या आप अब देखते हैं कि इसे क्यों प्रतिबंधित किया गया है? =)

+1

धन्यवाद, यह बहुत समझ में आता है। मान लें कि उपयोगकर्ता पेपैल में लॉग इन है, तो बुराई वेबसाइट बाहरी साइट तक पहुंच सकती है जैसे कि वे इसमें लॉग इन हैं। –

+0

दिखाओ कि मैं एक डमी हूं और मुझे नहीं पता कि यह क्यों मना कर दिया गया है। क्या मुद्दा यह है कि halfnakedgirls.com आपके पेपैल कुकीज़ का उपयोग करके पेपैल को बुरा निर्देश भेजने में सक्षम है, भले ही वह उन कुकीज को पढ़ने में सक्षम न हो? जबकि "साइट रीडायरेक्ट" वर्कअराउंड के साथ, कुकी डेटा छीन लिया गया है और पेपैल आपको लॉग इन नहीं करेगा? –

+0

बिल्कुल, क्योंकि ब्राउज़र स्वचालित रूप से किए गए प्रत्येक अनुरोध में कुकीज़ जोड़ता है। आप yourpaypallike.com का अनुरोध करते हैं, ब्राउज़र AJAX अनुरोध के साथ paypallike.com की कुकीज़ भेजता है। 'साइट रीडायरेक्ट' वास्तव में कुकी को स्ट्रिप्स करता है। 'मध्य मैन सर्वर' के लिए किए गए पहले अनुरोध में एंड-टार्गेट (youpaypallike.com) की कुकीज़ शामिल नहीं है, इसलिए जब मध्य-व्यक्ति सर्वर पेपैलिक के अनुरोध को हस्तांतरित करता है, तो कोई पेपैलिक कुकीज़ नहीं। –

0

यहाँ अपने प्रश्न को पूरा करने के बारे में कुछ जानकारी है।

इस हालांकि आसपास तरीके हैं - जब आप अपनी AJAX ही डोमेन, जो बारी में अन्य डोमेन से एक स्क्रिप्ट कॉल और यह लौट सकते हैं पर एक PHP स्क्रिप्ट फोन हो सकता था। यह ब्राउज़र को संचार माध्यम के रूप में उपयोग नहीं करेगा हालांकि, यह आपके वेब सर्वर का उपयोग करेगा।

+1

लिंक के लिए धन्यवाद लेकिन यह अभी भी मुझे एक संतोषजनक कारण नहीं देता है जब इसकी अनुमति नहीं है, यह सिर्फ एक सुरक्षा अवधारणा के रूप में इसका वर्णन करता है। –

1

यह सुरक्षा उद्देश्यों के लिए है:

+0

धन्यवाद, मुझे पता है कि यह एक सुरक्षा जोखिम बन गया है लेकिन किसी ने भी यह नहीं बताया है कि यह अभी तक क्या है। –

3

टॉम, यह "अजाक्स अनुरोध सीमित नहीं है"। AJAX जावास्क्रिप्ट पर आधारित है। सुरक्षा कारण के लिए जावास्क्रिप्ट को क्रॉस डोमेन पर पहुंच प्रतिबंधित है। यदि आप वास्तव में क्रॉस डोमेन अजाक्स करना चाहते हैं, तो आप एक हैक कर सकते हैं।

YourPage (अजाक्स) ----> yourserver ----> ExternalDomain

आप अपने डोमेन, सर्वर साइड का उपयोग कर बाहरी डोमेन के लिए कॉल करेंगे अपने सर्वर में एक पृष्ठ अजाक्स का उपयोग फोन और परिणाम प्राप्त कर सकते हैं फिर अजाक्स प्रतिक्रिया के रूप में आप के पास वापस आते हैं। बेशक बाहरी डोमेन सर्वर से किए गए अनुरोध को बाहरी ब्राउज़र के लिए कुकीज़ भेजने के बिना बुलाया जाएगा जो आपके ब्राउज़र की स्मृति में रहता है। ऐसा इसलिए है क्योंकि अनुरोध आपके सर्वर द्वारा किया जाता है, न कि आपके ब्राउज़र पर।

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