2009-07-11 3 views
19

window.top.Location वस्तु के बारे में क्रॉस-डोमेन नीतियों में एक बहुत ही विशेष रूप से बढ़त मामले नहीं है ...शीर्ष पर एक IFrame वास्तव में क्या कर सकता है। स्थान वस्तु (क्रॉस-डोमेन)?

चलो कहते हैं कि मैं, डोमेन www.bbb.com में IFrame एक है, डोमेन में एक पृष्ठ के अंदर रहने वाले हैं www.aaa.com।

iframe के भीतर पेज कर सकते हैं:

  • विंडो स्थान को window.top.location तुलना करें (पता लगाने के लिए कि क्या यह फंसाया जा रहा है)
  • कॉल window.top.location.replace (विंडो स्थान) आत्म करने के लिए
  • कॉल window.top.location.replace रीडायरेक्ट करने के लिए ("किसी भी मनमाने ढंग से स्ट्रिंग") कहीं और रीडायरेक्ट करने के लिए

लेकिन यह नहीं कर सकते हैं:

  • चेतावनी, document.write, या किसी अन्य चर में
  • जुटना यह window.top.location.href के उत्पादन में किसी भी तरह का करते हैं, या किसी उपयोगी तरीका
  • कॉल window.top.location में इसका इस्तेमाल करते हैं .reload()

ये केवल वे हैं जिन्हें मैं जल्दी से ढूंढ सकता हूं। मुझे यकीन है कि अन्य किनारे के मामले हैं।
यह ब्राउज़र की तरह लगता है, तो शीर्ष एक और डोमेन में है top.location वस्तु का उपयोग करते हैं, की अनुमति नहीं दे में कुछ बातों के लिए श्वेतसूची वाले छोड़कर ...

इस कहीं भी दस्तावेज है?
क्या मुझे ये श्वेतसूची क्या मिल सकती है?
क्या यह HTML मानक में है, और सभी ब्राउज़रों में समान रूप से लागू किया गया है? या इस अर्ध-यादृच्छिक के कार्यान्वयन है?

+1

यदि आपको कोई जवाब मिलता है, खासकर "यह कहीं भी दस्तावेज है", तो कृपया इसे पोस्ट करें। मुझे अतीत में आईई क्रॉस डोमेन सुरक्षा प्रतिबंधों के साथ काम करना पड़ा है, और ऐसा लगता है कि आप क्या कर सकते हैं और नहीं कर सकते हैं। मैंने वास्तव में कभी भी कोई दस्तावेज नहीं देखा है। –

+0

निश्चित रूप से, लेकिन मुझे अब तक कुछ भी नहीं मिला है (इस प्रकार सवाल यहां) –

उत्तर

6

सुरक्षा नियम ब्राउज़र के संस्करण के साथ भिन्न हैं। आम तौर पर नए संस्करणों में कठोर नियम होते हैं, लेकिन यह भी अधिक ठीक है।

मुझे संदेह है कि पुराने ब्राउज़र आपको शीर्ष फ्रेम के स्थान ऑब्जेक्ट तक आसानी से पहुंचने देंगे, थोड़ा नए ब्राउज़र इसे पूरी तरह से इनकार कर देंगे, और वर्तमान संस्करण आपको स्थान ऑब्जेक्ट की तुलना करने देते हैं लेकिन उनसे नहीं पढ़ते हैं।

आप इसके बारे में दस्तावेज़ीकरण प्राप्त कर सकते हैं, लेकिन यह प्रत्येक ब्राउज़र के लिए विशिष्ट होगा और ब्राउज़र के प्रत्येक संस्करण के लिए विशिष्ट होगा। जहां तक ​​मुझे पता है, इसके लिए कोई वास्तविक मानक नहीं है। प्रत्येक ब्राउजर विक्रेता जितना संभव हो सके उपयोगकर्ता की रक्षा करने की कोशिश करता है, जबकि अभी भी वेब साइट बिल्डर के लिए कुछ उपयोगिता रखता है। आम तौर पर आप वास्तव में यह नहीं मान सकते कि सीमा के करीब कुछ भी सभी ब्राउज़रों में काम करता है, या यह भविष्य के संस्करणों में काम करना जारी रखेगा।

+1

"स्थान वस्तुओं की तुलना करें लेकिन उनसे नहीं पढ़ा" का क्या मतलब है? एम्बेडेड पेज शीर्ष पृष्ठ के यूआरएल * को जानने में सक्षम होने के बिना अपने स्थान की तुलना कैसे कर सकता है? – Pacerier

+1

@Pacerier: क्योंकि स्थान संपत्ति एक वस्तु है, जिसमें पृष्ठ का URL 'href' संपत्ति के रूप में होता है। यदि आप किसी भिन्न डोमेन से URL रखते हैं, तो आप स्थान ऑब्जेक्ट की तुलना कर सकते हैं, लेकिन जब आप किसी भिन्न डोमेन से URL ऑब्जेक्ट से 'href' प्रॉपर्टी नहीं पढ़ सकते हैं। – Guffa

+0

स्पष्टीकरण के लिए धन्यवाद =) इस प्रतिबंध को बाईपास करने और "कंटेनर पेज" का यूआरएल प्राप्त करने के कुछ ज्ञात तरीके क्या हैं? – Pacerier

8

यह बिल्कुल HTML5 standard in section 5.5.3.1 द्वारा निर्दिष्ट है।

+0

+1। प्रतिक्रिया में बताया गया यह सटीक है। –

+0

मेरी इच्छा है कि spec अधिक मानव पठनीय था। "निम्नलिखित अपवादों के साथ: href setter, यदि प्रविष्टि सेटिंग्स ऑब्जेक्ट द्वारा निर्दिष्ट जिम्मेदार ब्राउज़िंग संदर्भ ब्राउज़िंग संदर्भ से परिचित है जिसके साथ स्थान ऑब्जेक्ट संबद्ध है" क्या ??? –

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