"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني الحصول على عنوان URL للصفحة الرئيسية من iFrame على نطاق فرعي مختلف؟

كيف يمكنني الحصول على عنوان URL للصفحة الرئيسية من iFrame على نطاق فرعي مختلف؟

تم النشر بتاريخ 2024-11-18
تصفح:678

How Can I Get the Parent Page's URL from an iFrame on a Different Subdomain?

الوصول إلى عنوان URL للإطار الأصلي من iFrame: القيود والحلول

يمكن أن يمثل الوصول إلى عنوان URL للإطار الأصلي من iFrame تحديًا، خاصة عندما يقع iFrame في مجال فرعي مختلف. ويرجع ذلك إلى القيود الأمنية التي تفرضها تدابير منع البرمجة النصية عبر المواقع (XSS).

عند الوصول إلى iFrame من نفس المجال والنطاق الفرعي مثل الإطار الأصلي، يجب أن يكون الوصول إلى موقع الأصل مباشرًا باستخدام تعبيرات مثل الأصل .document.location أوparent.window.location. ومع ذلك، كما أوضح المستخدم، يفشل هذا الأسلوب عندما يكون iFrame موجودًا في نطاق فرعي مختلف.

لتوضيح هذه النقطة بشكل أكبر، خذ بعين الاعتبار المثال المقدم حيث يتم استضافة pageA.html على http://www.mysite تتم استضافة .com/ وpageB.html (iFrame) على http://qa-www.mysite.com/. ستؤدي محاولة استرداد عنوان URL الخاص بالوالد من pageB.html إلى حدوث خطأ رفض الوصول. وهذا يؤكد أن النطاقات الفرعية تخضع أيضًا لقيود البرمجة النصية عبر المواقع.

على الرغم من أن الوصول إلى عنوان URL الخاص بالوالد مباشرة محظور في ظل هذه الظروف، إلا أن هناك حل بديل يمكن استخدامه. للحصول على عنوان URL للإطار الأصلي، يمكن استخدام كود JavaScript التالي:

var url = (window.location != window.parent.location)
            ? document.referrer
            : document.location.href;

ملاحظة:

    window.parent.location يتجنب الخطأ الأمني ​​الناتج عن الوصول إلى خاصية href (window.parent. location.href).
  • يشير document.referrer إلى معرف URI الخاص بالصفحة المرتبطة بـ iFrame. قد لا يؤدي هذا إلى إرجاع المستند المحتوي إذا تم تحديد موقع iFrame بواسطة مصدر آخر.
  • يشير document.location إلى عنوان URL للمستند، وهو iFrame في هذه الحالة. عندما يكون window.location وwindow.parent.location متطابقين، يكون href الخاص بـ iFrame هو نفس href الخاص بالأصل.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3