Document.domain

من موسوعة حسوب
مراجعة 11:05، 21 مارس 2018 بواسطة عبد-الهادي-الديوري (نقاش | مساهمات) (إضافة جزء من الصّفحة)

تُستعمل للحصول على نطاقِ أصلِ المُستند الحالي أو ضبطه. وذلك حسب سياسة الأصل الواحد (same origin policy).

البنية العامة

var domainString = document.domain;
document.domain = string;

مثال

// للمُستند
// www.example.xxx/good.html

// يُغلق هذا البرنامج النّافذة
var badDomain = "www.example.xxx";

if (document.domain == badDomain) {
   window.close(); // هذا مُجرّد مثال، إذ أنّ هذا السّطر لا يقوم بأي شيء في بعض الأحيان
}
// إن كان الرّابط مثلا
// https://wiki.hsoub.com/JavaScript/Document
// فستُضبط القيمة التّاليّة للمُتغيّر
// "wiki.hsoub.com"
var domain = document.domain;

ملاحظات

تُعيد هذه الخاصيّة القيمة null في حالة لم يُمكِن التّعرّف على نطاق المُستند. يُمكن تغيير قيمة هذه الخاصيّة إلى النّطاق الأب للنّطاق الفرعيّ الحالي. على سبيل المثال، يُمكنُ تعيين القيمة hsoub.com للصّفحة إن كان نطاقها wiki.hsoub.com أو academy.hsoub.com لكن لا يُمكن تحديد قيمة اسم نطاق مُغاير مثل hsoub.org. إن ضُبِطت هذه الخاصيّة بنجاح، فالجزء الخاصّ بالمنفذ (port) يُضبَطُ كذلك إلى القيمة null. هناك فرق بين خاصيّة document.domain لم تتغيّر قيمتها وخاصيّة ذات قيمة ضُبِطت بنفس النّطاق الخاصّ بعنوان URL الخاصّ بالمُستند، ولو أعادت الخاصيّة نفس القيمة في كلتا الحالتين. يُمكن لمُستند أن يصِل إلى مُستند آخر إن ضُبِطت لهما الخاصيّة document.domain بنفس القيمة، إشارةً بذلك للرّغبة في العمل المُشترك بينهما، أو في حالة لم تُضبط الخاصيّة لأي منهما والنّطاقات في عناوين URL مُتساويان. ولو لم تكن هذه السّياسة الخاصّة موجودة، فجميع المواقع ستكون عرضة لهجمات XSS من نطاقاتها الفرعيّة، أي أنّه سيُمكِن الهجوم على academy.hsoub.com في حالة كانت هناك ثغرة في wiki.hsoub.com.

مصادر ومواصفات