2009-01-16 14 views
8

मैं 'क्रॉस-डोमेन सुरक्षा' कैसे खोलूं, इसलिए पृष्ठ पर जावास्क्रिप्ट एसडब्ल्यूएफ के साथ स्वतंत्र रूप से संवाद कर सकता है, भले ही यह किसी अन्य डोमेन पर होस्ट किया गया हो?जावास्क्रिप्ट और फ्लैश के बीच क्रॉस-डोमेन संचार कैसे बनाएं?

मुझे विश्वास है कि इस समारोह संचार डिफ़ॉल्ट रूप से अवरुद्ध है के लिए पता है, लेकिन एक फ़ाइल "crossdomain.xml" कहा जाता है और actionscript 3 समारोह के साथ प्रयोग करना द्वारा: system.Security.allowDomain ("*")। हालांकि मुझे पूर्ण सफलता नहीं मिल रही है, और मुझे यह जानने की अंतर्दृष्टि नहीं है कि किसके लिए खुल रहा है।

क्या अन्य छिपी सुरक्षा परतें हैं, जिन्हें मुझे इस परिदृश्य में सोचने की ज़रूरत है?

और क्या मैं इस सेटअप को किसी भी तरह से संभावित हैकर्स के लिए अपना कोड खोल रहा हूं?

(और मामले में आप सोच रहे हैं: हाँ, मैं एक परिदृश्य में, जहां एचटीएमएल एक डोमेन पर होस्ट किया गया है में इस कार्य, जावास्क्रिप्ट अन्य डोमेन से बाहर से जोड़ा जाता है और SWF द्वारा एम्बेडेड है बनाने के लिए है एक तीसरे डोमेन से जावास्क्रिप्ट - पूछें क्यों नहीं, यह समझाने के लिए बहुत जटिल है - मैं भी चाहता हूं कि मैं सिर्फ एक ही डोमेन में पूरी चीज़ होस्ट कर सकूं)।

उत्तर

17

एसडब्ल्यूएफ में Security.allowDomain("www.example.com") का उपयोग करके जेएस को www.example.com से पृष्ठ में ExternalInterface.addCallback() के साथ एसडब्ल्यूएफ में उजागर कार्यों को कॉल करने की अनुमति मिलेगी। डोमेन और सबडोमेन बिल्कुल मेल खाना चाहिए। "*" का उपयोग किसी भी डोमेन को एसडब्ल्यूएफ के साथ संवाद करने की अनुमति देगा, लेकिन यदि आपके पास एक विशिष्ट डोमेन है, तो इसका उपयोग करना बेहतर होगा।

एचटीएमएल एम्बेड कोड में allowScriptAccessalways पर सेट करने से एसडब्ल्यूएफ जावास्क्रिप्ट कार्यों को कॉल करने की अनुमति देगा।

एक बात जो कई डेवलपर्स को पकड़ती है वह यह है कि एसडब्ल्यूएफ लोड होने तक जावास्क्रिप्ट एसडब्ल्यूएफ पर कार्यों को कॉल करने में सक्षम नहीं होगा। दुर्भाग्यवश, कोई जेएस-आधारित कार्यक्रम नहीं है जो आपको बताता है कि जब एसडब्ल्यूएफ तैयार है (कम से कम मुझे मिला है)। एसडब्ल्यूएफ तैयार होने वाले पृष्ठ को सूचित करने के लिए एसडब्ल्यूएफ लोडिंग खत्म होने पर तुरंत इस समस्या के आसपास काम करने के लिए मैं जो करता हूं वह एसएसएफ से जेएस फ़ंक्शन को कॉल करता है।

यहां कुछ और अमूर्तता है, लेकिन यदि आप YUI Charts के लिए स्रोत कोड पर नज़र डालते हैं, तो आप यह पता लगाने में सक्षम होंगे कि याहू! क्रॉसडोमेन जेएस/एसडब्ल्यूएफ संचार काम कर रहा है।

+0

मैं क्या घंटे की तरह लगता है के लिए खोज कर रहा है, और यह अब तक सबसे अच्छा स्पष्टीकरण मैं आया हूँ। स्पष्टता के साथ समझाओ के लिए धन्यवाद! – zombat

+0

आपको बहुत धन्यवाद – simo

1

एक बात जो मैं पिछले उत्तर में जोड़ूंगा: यदि आप उपरोक्त कोड को आजमाते हैं और यह काम नहीं करता है, तो यह देखने के लिए जांचें कि क्या आपकी साइट के पते में "www" शामिल है या नहीं। मेरा अगर मैं

Security.allowDomain("www.jeremy-knight.com"); 

के रूप में यह लिखा था कि मैं यह लिखने के रूप में की जरूरत काम नहीं था और नहीं था:

Security.allowDomain("jeremy-knight.com"); 
+1

उन दोनों को क्यों नहीं जोड़ रहे हैं? – simo

+0

अच्छा बिंदु, धन्यवाद समझ में आता है। –

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