jquery - document.domain and cross-site-scripting -
डिबगिंग सहायता का अनुरोध किया।
पृष्ठ में यह कोड है:
& lt; स्क्रिप्ट & gt; Document.domain = 'freshfaves.com'; $ (दस्तावेज़) .ready (फ़ंक्शन () {var dbUrl = 'http://freshfaves.com/'; var परिणाम = ''; $ .एजेंड ({प्रकार: "पोस्ट", यूआरएल: डीबीयूआरएल, डेटा: [] , // params, async: false, डेटा प्रकार: "पाठ", सफलता: फ़ंक्शन (डी, स्थिति) {परिणाम = डी; वापस लौटा;}, त्रुटि: कार्य (xmlhttp, errmsg) {परिणाम = errmsg; वापसी वापस;} }); सतर्क ('परिणाम:' + परिणाम);}); & Lt; / स्क्रिप्ट & gt;
मेरी समझ के लिए, XMLHttpRequest क्रॉस-साइट रिस्ट्रिक्ट्स को दस्तावेज़.डोमेन मान के आधार पर चेक किया जाता है, और यह वैल्यू वर्तमान पृष्ठ यूआरएल के वैध प्रत्यय दोनों पर सेट है, और अनुरोधित पृष्ठ की मेजबानी करने वाली साइट के लिए एक सटीक मेल।
यह एक क्रॉस-साइट अनुरोध है, जिसमें www.freshfaves.com और freshfaves.com अलग मेजबान पर हैं नतीजा एक 'चेतावनी' परिणाम प्रदर्शित करने वाला बॉक्स है। अन्य साइट पर दिए गए वेबलॉग दिखाते हैं कि अनुरोध वहां प्राप्त नहीं हुआ था, इसलिए अनुरोध भेजा जाने से पहले यह जाहिरा तौर पर गलत था।
अगर मैं dbUrl को '' में बदलता हूं, तो अनुरोध सफल होता है, इसलिए समस्या बारीकी से दिखती है यूआरएल से संबंधित है, और कोड में कहीं भी एक बग नहीं है।
यह संभव नहीं होना चाहिए, चूंकि यह मूल रूप से एक अलग डोमेन नाम है, संभवतः एक पूरी तरह से भिन्न सर्वर की ओर इशारा करते हैं।
संपादित करें: बस देखा गया
document.domain = 'freshfaves.com';
भाग यह केवल अलग (उप) डोमेन से दो स्क्रिप्ट संवाद करने देता है, उदा। विभिन्न उप डोमेन से iframes के साथ दोनों पक्षों को इस संपत्ति को एक ही डोमेन में संवाद करने की आवश्यकता है। इस काम को कैसे करें, इसके बारे में अधिक जानकारी के साथ इस लिंक को देखें:
W3C से एक मसौदा है जो निर्दिष्ट करता है कि कैसे क्रॉस-मूल अनुरोधों को नियंत्रित किया जाए, जो कि (आंशिक रूप से) फ़ायरफ़ॉक्स 3 में लागू है, और संभवत: अन्य ब्राउज़र्स भी:
मुझे लगता है कि जब लोग डोमेन नाम के सामने www के साथ साइट पर जाते हैं तो आपको परेशानी होती है, लेकिन कुछ भी www भाग www भाग को यूआरएल में मौजूद है, या इससे भी बेहतर, यूआरएल को रिश्तेदार बनाने के लिए अपने डोमेन नाम को गतिशील तरीके से तैयार करके इसका समाधान किया जा सकता है:
Var dbUrl = '/ mylocation';
Comments
Post a Comment