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
.
مصادر ومواصفات
- مواصفة DOM Level 2 HTML: document.domain.
- مواصفة HTML5: document.domain.