Document.domain

من موسوعة حسوب

تُستعمل للحصول على نطاقِ أصلِ المُستند الحالي أو ضبطه. وذلك حسب سياسة الأصل الواحد (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 للخاصية document.domain إن كان نطاق الصفحة هو wiki.hsoub.com أو academy.hsoub.com لكن لا يُمكن تحديد قيمة اسم نطاق مُغاير مثل hsoub.org.

إن ضُبِطت هذه الخاصيّة بنجاح، فالجزء الخاصّ بالمنفذ (port) يُضبَطُ كذلك إلى القيمة null.

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

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