فهم "نفس الموقع الإلكتروني" و "quot;quot;same-origin"

كثيرًا ما يتم الاستشهاد بالمصطلحات "الموقع نفسه" و "المصدر نفسه"، ولكن غالبًا ما يُساء فهمهما. على سبيل المثال، تتم الإشارة إليها في سياق عمليات انتقال الصفحات وطلبات fetch() وملفات تعريف الارتباط وفتح النوافذ المنبثقة والموارد المضمّنة وإطارات iframe.

الأصل

الأصل

"Origin" هو تركيبة من المخطط (المعروف أيضًا باسم البروتوكول، على سبيل المثال HTTP أو HTTPS) واسم المضيف والمنفذ (في حال تحديده). على سبيل المثال، إذا كان عنوان URL هو https://www.example.com:443/foo، يكون "المصدر" هو https://www.example.com:443.

"المصدر نفسه" و "مشترك من مصادر متعددة"

تُعتبر المواقع الإلكترونية التي تحتوي على نفس المخطط واسم المضيف والمنفذ "المصدر نفسه". يُعتبر كل شيء آخر "مشترك من مصادر متعددة".

المصدر (أ) المصدر (ب) توضيح ما إذا كان المصدران "أ" و"ب" هما "المصدر نفسه" أو "من مصادر متعددة"
https://www.example.com:443 https://www.evil.com:443 Cross-origin: نطاقات مختلفة
https://example.com:443 مشتركة المصدر: نطاقات فرعية مختلفة
https://login.example.com:443 مشتركة المصدر: نطاقات فرعية مختلفة
http://www.example.com:443 مشتركة المصادر: مخططات مختلفة
https://www.example.com:80 جميع المصادر: منافذ مختلفة
https://www.example.com:443 نفس المصدر: مطابقة تامة
https://www.example.com same-origin: تطابق رقم المنفذ الضمني (443)

الموقع

الموقع الإلكتروني (TLD+1)

يتم إدراج نطاقات المستوى الأعلى (TLD) مثل .com و.org في قاعدة بيانات منطقة الجذر. في المثال أعلاه، يشكّل "site" مجموعة من المخطط ونطاق المستوى الأعلى (TLD) وجزء النطاق الذي يقع قبله مباشرةً (نطلق عليه TLD+1). على سبيل المثال، إذا كان عنوان URL هو https://www.example.com:443/foo، يكون "الموقع الإلكتروني" هو https://example.com.

قائمة اللاحقة العامة وeTLD

بالنسبة إلى النطاقات التي تتضمّن عناصر مثل .co.jp أو .github.io، ليس مجرد استخدام .jp أو .io دقيقًا بما يكفي لتحديد "الموقع الإلكتروني". وليست هناك طريقة لتحديد مستوى النطاقات القابلة للتسجيل لنطاق TLD معيّن خوارزميًا. هذا هو السبب في إنشاء قائمة باللاحقات العامة المحددة في قائمة اللواحق العامة. ويُطلق على هذه الملحقات العامة أيضًا اسم نطاقات المستوى الأعلى (eTLD) الفعلية. يتم الاحتفاظ بقائمة eTLD على publicsuffix.org/list.

لتحديد جزء "الموقع الإلكتروني" من نطاق يتضمّن eTLD، طبِّق الممارسة نفسها المتّبعة في المثال باستخدام .com. إذا نظرنا إلى https://www.project.github.io:443/foo كمثال، نجد أنّ المخطط هو https، وeTLD هو .github.io وeTLD+1 هو project.github.io، وبالتالي يُعتبر https://project.github.io "الموقع الإلكتروني" لعنوان URL هذا.

الموقع الإلكتروني (eTLD+1)

"المواقع الإلكترونية نفسها" و "المواقع الإلكترونية المتعدّدة"

تُعتبر المواقع الإلكترونية التي لها النظام نفسه ونطاق eTLD+1 نفسه "موقعًا واحدًا على الويب". المواقع الإلكترونية التي تحتوي على مخطط مختلف أو eTLD+1 مختلف هي "مواقع إلكترونية متعدِّدة".

المصدر (أ) المصدر (ب) توضيح ما إذا كان المصدران "أ" و"ب" من أجل "الموقع الإلكتروني نفسه" أو "في مواقع إلكترونية متعددة"
https://www.example.com:443 https://www.evil.com:443 عبر المواقع: نطاقات مختلفة
https://login.example.com:443 الموقع الإلكتروني نفسه: لا تهم النطاقات الفرعية المختلفة
http://www.example.com:443 مواقع إلكترونية مختلفة: مخططات مختلفة
https://www.example.com:80 الموقع نفسه: لا تهم المنافذ المختلفة
https://www.example.com:443 نفس الموقع: مطابقة تامة
https://www.example.com الموقع نفسه: المنافذ غير مهمة

"الموقع نفسه بلا مخطط"

الموقع نفسه بلا مخطط

تطوّر تعريف "الموقع الإلكتروني نفسه" لمراعاة نظام عنوان URL كجزء من الموقع الإلكتروني من أجل منع استخدام HTTP كقناة ضعيفة. إنّ المفهوم القديم لـ "الموقع الإلكتروني نفسه" بدون مقارنة المخططات يُطلق عليه الآن اسم "الموقع الإلكتروني نفسه الذي لا مضمون له". على سبيل المثال، يُعتبر كل من http://www.example.com وhttps://www.example.com موقعًا واحدًا بلا مخطط، ولكن ليس نفس الموقع، لأن الجزء eTLD+1 فقط مهم جدًا ولا يتم وضع المخطط في الاعتبار.

المصدر (أ) المصدر (ب) شرح ما إذا كان المصدران "أ" و"ب" "موقع واحد بلا مخطط"
https://www.example.com:443 https://www.evil.com:443 عبر المواقع: نطاقات مختلفة
https://login.example.com:443 الموقع الإلكتروني نفسه بدون مخطط: لا تهم النطاقات الفرعية المختلفة
http://www.example.com:443 استخدام الموقع الإلكتروني نفسه بدون مخطط: لا تهم المخططات المختلفة
https://www.example.com:80 الموقع نفسه بدون مخطط: لا تهم المنافذ المختلفة
https://www.example.com:443 موقع إلكتروني واحد قائم: مطابقة تامة
https://www.example.com استخدام الموقع الإلكتروني نفسه بلا مخطط: لا تهم المنافذ

كيفية التحقّق مما إذا كان الطلب هو "الموقع الإلكتروني نفسه" أو "المصدر نفسه" أو "من مواقع إلكترونية متعددة"

ترسل جميع المتصفّحات الحديثة (إتاحة Safari قريبًا) الطلبات مع عنوان HTTP يتضمّن السمة Sec-Fetch-Site. يحتوي العنوان على إحدى القيم التالية:

  • cross-site
  • same-site
  • same-origin
  • none

من خلال فحص قيمة Sec-Fetch-Site، يمكنك تحديد ما إذا كان الطلب من أجل "الموقع نفسه" أو "المصدر نفسه" أو "مواقع إلكترونية متعددة".