عنوان استجابة HTTP جديد للحدّ من البرمجة النصية على مستوى النطاق وطلب موارد مخصّصة من المتصفّح
Origin-Agent-Cluster
هو عنوان استجابة HTTP جديد يوجّه المتصفّح لمنع
برمجة نصية متزامنة بين الصفحات المشتركة المصدر والتابعة للموقع نفسه. قد تستخدم المتصفحات أيضًا
تشير السمة Origin-Agent-Cluster
إلى أنّ المصدر يجب أن يحصل على موارده المنفصلة الخاصة، مثل
عملية مخصصة.
توافُق المتصفح
لا يتم تنفيذ عنوان Origin-Agent-Cluster
حاليًا إلا في الإصدار Chrome 88 والإصدارات الأحدث. وقد تم تصميمه
بالتعاون الوثيق مع ممثلين من Mozilla Firefox الذين وضعوا علامة قيمة على المنتج
نماذج أوّلية، ويحتوي على
موجب أولي
عالية من
ممثلين عن WebKit، محرك المتصفح الذي يستخدمه Safari.
في هذه الأثناء، ما مِن مشكلة في نشر عنوان Origin-Agent-Cluster
على جميع
المستخدمين اليوم. المتصفحات التي لا تفهمها ستتجاهلها فقط. ونظرًا لأن الصفحات في
يمكن أن تنفّذ مجموعات الوكلاء المستنِدة إلى المصدر إجراءات أقل من العمليات المستندة إلى الموقع الإلكتروني (
افتراضي)، فليس هناك أي مشكلات في إمكانية التشغيل التفاعلي ينبغي أن تقلق بشأنها.
أسباب عدم تمكّن المتصفّحات من فصل مصادر الموقع الإلكتروني نفسه تلقائيًا
يستند الويب إلى سياسة المصدر نفسه، وهي ميزة أمان
كيفية تفاعل المستندات والنصوص البرمجية مع موارد من مواقع
المصدر. على سبيل المثال، صفحة مستضافة على https://a.example
هي في
من مصدر مختلف من واحد في https://b.example
أو مصدر آخر في https://sub.a.example
.
في الخلفية، تستخدم المتصفّحات الفصل الذي توفّره المصادر بطرق مختلفة. في القديم فعلى الرغم من أنّ المصادر المنفصلة لن تتمكّن من الوصول إلى بيانات بعضها البعض، ستظل مشاركة الموارد مثل سلاسل نظام التشغيل والعمليات وتخصيص الذاكرة. هذا يعني أنه إذا كانت إحدى علامات التبويب بطيئة، مما كان يُبطئ جميع علامات التبويب الأخرى. أو إذا استخدمت إحدى علامات التبويب مساحة كبيرة من الذاكرة، قد يؤدي إلى تعطيل المتصفح بالكامل.
في الوقت الحالي، تكون المتصفحات أكثر تعقيدًا، وتحاول فصل الأصول المختلفة إلى والعمليات. تختلف آلية عمل ذلك بالضبط حسب كل متصفح: تحتوي معظم المتصفحات على مستوى فصل معين بين علامات التبويب، ولكن إطارات iframe المختلفة داخل علامة تبويب واحدة قد تشترك في العملية. ولأن العمليات تصاحبها بعض أعباء الذاكرة، فإنها تستخدم إشارات إرشادية لتجنب نشر عدد كبير جدًا من البيانات: على سبيل المثال، متصفح Firefox حد المعالجة من خلال المستخدم، وChrome يختلف سلوكه بين سطح المكتب (حيث توجد الذاكرة أكثر) والجوّال (حيث توجد المحدود).
هذه الإرشادات ليست مثالية. وهي تعاني من قيود مهمة، وهي أن هناك
باستثناءات لسياسة المصدر نفسه التي تسمح بالنطاقات الفرعية مثل https://sub.a.example
https://a.example
للتحدث مع بعضها، لا يمكن للمتصفحات فصل النطاقات الفرعية تلقائيًا عن
بعضنا البعض.
ويُسمّى هذا السلوك التلقائي "مجموعات الوكلاء المستنِدة إلى الموقع الإلكتروني"، أي أنّ المتصفِّح يجمع الصفحات استنادًا إلى
على موقعهم الإلكتروني. يطلب عنوان Origin-Agent-Cluster
الجديد من المتصفّح تغيير هذا الإعداد التلقائي.
لصفحة معيّنة، مع وضعها في مجموعة وكلاء مستنِدة إلى المصدر، بحيث يتم تجميعها
فقط مع الصفحات الأخرى التي لها المصدر نفسه بالضبط. وعلى وجه الخصوص، الصفحات من مصادر متعددة للموقع الإلكتروني نفسه
من مجموعة الوكلاء.
من خلال فصل الموافقة هذا، يمكن للمتصفّحات تخصيص مجموعات الوكلاء الجديدة هذه المستندة إلى المصدر الخاصة بها.
الموارد المخصصة، التي لا يتم دمجها مع الموارد ذات المصادر الأخرى. على سبيل المثال، تتضمن هذه الصفحات
أو يمكنه الحصول على عمليته الخاصة أو جدولته في سلاسل محادثات منفصلة. من خلال إضافة
Origin-Agent-Cluster
إلى صفحتك، فهذا يعني أنك توضح للمتصفح أن الصفحة
من هذه الموارد المخصصة.
ومع ذلك، لإجراء الفصل والحصول على هذه المزايا، يحتاج المتصفّح إلى إيقاف. بعض الميزات القديمة.
الإجراءات التي لا يمكن تنفيذها في الصفحات المستندة إلى المصدر
عندما تكون صفحتك ضِمن مجموعة وكلاء مستنِدة إلى المصدر، يتم التخلي عن بعض إمكانية التواصل مع الموقع الإلكتروني نفسه. الصفحات المتعددة المصادر التي كانت متوفرة سابقًا. وعلى وجه الخصوص:
لم يعد بإمكانك ضبط
document.domain
هذا هو ميزة قديمة تتيح عادةً للصفحات المشتركة المصدر على الموقع نفسه الوصول المتزامن إلى كل في DOM لغيره من العناصر، ولكن يتمّ إيقافه في مجموعات الوكلاء المستنِدة إلى المصدر.لم يعُد بإمكانك إرسال
WebAssembly.Module
كائنات من صفحات أخرى تابعة للموقع الإلكتروني نفسه عبرpostMessage()
.(Chrome فقط) لم يعد بإمكانك إرسال
SharedArrayBuffer
أوWebAssembly.Memory
إلى صفحات أخرى تابعة للموقع الإلكتروني نفسه
حالات استخدام مجموعات الوكلاء المستنِدة إلى المصدر
المصادر التي تستفيد بشكل أكبر من عنوان Origin-Agent-Cluster
هي المصادر التالية:
تحقيق أفضل أداء باستخدام مواردهم المخصّصة متى أمكن ذلك ومن الأمثلة على ذلك: الألعاب ذات الأداء الكثيف أو مواقع اجتماعات الفيديو أو تطبيقات إنشاء الوسائط المتعددة.
يحتوي على إطارات iframe مكثفة الموارد ذات مصادر مختلفة، لكنّها من الموقع الإلكتروني نفسه. على سبيل المثال، إذا يضمِّن
https://mail.example.com
https://chat.example.com
إطارات iframe، مع استخدام مفتاح المصدر. يضمنhttps://mail.example.com/
أن الرمز الذي كتبه فريق المحادثة لا يمكن عن طريق الخطأ تتداخل مع التعليمات البرمجية المكتوبة من قبل فريق البريد، ويمكن أن تلمس المتصفح لمنحهم إذنًا منفصلاً وجدولتها بشكل مستقل وتقليل تأثيرها في الأداء في بعضها البعض.توقُّع أن تكون مضمّنة في صفحات من مصادر مختلفة وصفحات الموقع الإلكتروني نفسه، ولكن يجب أن تكون كثيف الموارد. على سبيل المثال، إذا كانت
https://customerservicewidget.example.com
تتوقع استخدام الكثير من الموارد لدردشة الفيديو، وسيتم تضمينها في أصول مختلفة خلالhttps://*.example.com
، يحافظ الفريق على أن هذه الأداة يمكنها استخدامOrigin-Agent-Cluster
لمحاولة تقليل تأثيرها في التضمينات.
بالإضافة إلى ذلك، سيلزمك أيضًا التأكد من الموافقة على إيقاف ما سبق ذكره نادرًا ما يتم استخدامه. ميزات التواصل من مصادر متعددة، وأنّ موقعك الإلكتروني يستخدمها HTTPS.
ولكن في النهاية، هذه مجرد مبادئ توجيهية. ما إذا كانت مجموعات الوكلاء المستنِدة إلى المصدر ستساعد موقعك الإلكتروني أم لا من الأفضل تحديده من خلال القياسات أو لا. وسترغب بشكل خاص في قياس مؤشرات أداء الويب، وربما الذاكرة ، لمعرفة تأثير مفتاح المصدر. (استخدام الذاكرة في على وجه الخصوص أحد المخاوف المحتملة، حيث أن زيادة عدد العمليات قيد التشغيل يمكن أن تتسبب في أعباء الذاكرة لكل عملية). يجب ألا تكتفي بتقديم البيانات الأساسية، بل تحقيق أفضل النتائج.
ما علاقة ذلك بحظر الوصول من نطاقات أخرى؟
إنّ طريقة تجميع مجموعات الوكلاء من خلال العنوان Origin-Agent-Cluster
ترتبط بنتائج مختلفة،
من، حظر الوصول من نطاقات أخرى عبر Cross-Origin-Opener-Policy
Cross-Origin-Embedder-Policy
عناوين
سيوقف أيضًا أي موقع إلكتروني يعزل المحتوى من مصادر متعددة النطاق نفسه مصدر الوصول من مواقع إلكترونية متعددة المصدر نفسها.
الاتصالات كما هو الحال عند استخدام عنوان Origin-Agent-Cluster
. ومع ذلك،
يمكن أن يظل عنوان Origin-Agent-Cluster
مفيدًا في ما يخص حظر الوصول من نطاقات أخرى،
إلى المتصفِّح لتعديل إرشادات تخصيص الموارد. لذلك يجب أن تفكر في
تطبيق عنوان Origin-Agent-Cluster
وقياس النتائج، حتى على الصفحات التي
يحظر الوصول من نطاقات آخرى.
كيفية استخدام عنوان Origin-Agent-Cluster
لاستخدام عنوان Origin-Agent-Cluster
، يجب إعداد خادم الويب لإرسال عنوان HTTP التالي:
عنوان الاستجابة:
Origin-Agent-Cluster: ?1
قيمة ?1
هي العنصر
بنية العنوان للقيم المنطقية true
من المهم إرسال هذا العنوان إلى جميع الردود من المصدر، وليس فقط بعض الصفحات. وإلا، فقد تحصل على نتائج غير متسقة، حيث "يتذكر" المتصفح رؤية مفتاح المصدر بحيث يعمل المفتاح الأصلي حتى على الصفحات التي لا تطلب ذلك. أو العكس: إذا كانت الصفحة الأولى عدم توفُّر رأس الصفحة للمستخدم الذي يزوره، فسيتذكّر المتصفّح أنّ المصدر لا يريد مستندة إلى المصدر، وستتجاهل العنوان في الصفحات اللاحقة.
سبب هذه "الذاكرة" هو ضمان اتساق عملية المفاتيح في المصدر. إذا كانت بعض صفحات على
كانت الصفحات المصدر مستندة إلى المصدر، بينما لم تكن الصفحات الأخرى مستندة إلى المصدر نفسه، يمكن أن تكون لديك صفحتين من المصدر نفسه
في مجموعات مختلفة من الوكلاء، وبالتالي لم يكن مسموحًا لهم بالتحدث مع بعضهم البعض. سيكون هذا
غريبًا جدًا، على كل من مطوري الويب والتفاصيل الداخلية للمتصفح. إذًا، لا شك أن مواصفات
بالنسبة إلى Origin-Agent-Cluster
بدلاً من ذلك، إذا كان غير متسق مع ما كان في السابق
تتم رؤيتها لمنشأ معين. وفي Chrome، سيؤدي ذلك إلى ظهور تحذير في وحدة التحكّم.
يقتصر هذا الاتساق على مجموعة سياق التصفح، وهي مجموعة من علامات التبويب أو النوافذ أو
إطارات iframe التي يمكن أن تصل جميعها إلى بعضها باستخدام آليات مثل window.opener
أو frames[0]
أو
window.parent
وهذا يعني أنّه بعد تسوية مصدر المصدر أو ترميز الموقع الإلكتروني (عن طريق
المتصفح إما يرى العنوان أو لا يراه)، فإن تغييره يتطلب فتح عنوان جديد
علامة التبويب، غير مرتبطة بالقديمة بأي شكل من الأشكال.
يمكن أن تكون هذه التفاصيل مهمة لاختبار عنوان Origin-Agent-Cluster
. عند إضافته لأول مرة
إلى موقعك الإلكتروني، فلن تنجح إعادة تحميل الصفحة يجب إغلاق علامة التبويب وفتح
واحد.
للتحقّق مما إذا تم تطبيق عنوان Origin-Agent-Cluster
، يمكنك استخدام JavaScript
الموقع الإلكتروني window.originAgentCluster
. وستكون هذه القيمة true
في الحالات التي يكون فيها العنوان (أو غيره
تسببت آليات أخرى، مثل حظر الوصول من نطاقات أخرى) في الاستيلاء على المصدر، false
ومتى لم يكن كذلك؛ وundefined
في المتصفّحات التي لا يتمّ تنفيذ عنوان Origin-Agent-Cluster
فيها.
يمكن أن يوفر تسجيل هذه البيانات إلى نظام التحليلات الذي تستخدمه تحققًا قيّمًا من أنّك ضبطت
خادمك بشكل صحيح.
وأخيرًا، يُرجى ملاحظة أنّ عنوان Origin-Agent-Cluster
لن يعمل إلا على الآمن
السياقات، أي على HTTPS
أو على http://localhost
. صفحات HTTP غير المضيفة لا تتوافق مع الوكيل المستند إلى المصدر
المجموعات العنقودية.
تحديد المصدر ليس ميزة أمان
في حين أنّ استخدام مجموعة وكلاء مستنِدة إلى المصدر يعزل المصدر عن الوصول المتزامن من
الصفحات التابعة للموقع نفسه، إلا أنها لا توفر حماية
العناوين المتعلقة بالأمان مثل
Cross-Origin-Resource-Policy
أو
Cross-Origin-Opener-Policy
وعلى وجه الخصوص، لا توفر حماية موثوقة ضد هجمات القنوات الجانبية مثل
Spectre:
قد يكون ذلك مفاجئًا بعض الشيء، لأنّ تحديد المصدر قد يؤدي أحيانًا إلى إنشاء مصدر فريد
والعمليات المنفصلة كدفاع مهم ضد هجمات القنوات الجانبية. ولكن تذكر
يُعتبر عنوان Origin-Agent-Cluster
تلميحًا في هذا الشأن فقط. تم إخفاء المتصفح
التزامًا بإجراء عملية منفصلة للمصدر، وقد لا يحدث ذلك لعدة أسباب:
قد لا ينفِّذ المتصفّح التقنية لتنفيذ ذلك. على سبيل المثال، بالنسبة إلى متصفحي Safari وFirefox حاليًا وضع علامات تبويب منفصلة في عملياته الخاصة، ولكن لا يمكنه بعد ذلك مع إطارات iframe.
قد يعتقد المتصفّح أنّه لا يستحق عبء إجراء عملية منفصلة. على سبيل المثال، في في أجهزة Android منخفضة الذاكرة أو Android WebView، يستخدم Chrome أقل عدد ممكن من العمليات.
قد يحتاج المتصفّح إلى مراعاة الطلب الذي يشير إليه عنوان
Origin-Agent-Cluster
: ولكن يمكنه القيام بذلك باستخدام تقنية عزل مختلفة عن العمليات. على سبيل المثال، Chrome هو الاستكشاف استخدام السلاسل بدلاً من العمليات لهذا النوع من عزل الأداء.قد يكون المستخدم أو الرمز البرمجي قيد التشغيل على موقع إلكتروني مختلف قد انتقل إلى صفحة مستندة إلى الموقع الإلكتروني. على المصدر، ما يؤدي إلى بدء ضمان الاتساق سيتم تجاهل عنوان
Origin-Agent-Cluster
تمامًا.
لهذه الأسباب، من المهم عدم اعتبار مجموعات الوكلاء المستنِدة إلى المصدر كميزة أمان. وإنما هي وسيلة لمساعدة المتصفّح في تحديد أولويات تخصيص الموارد، من خلال الإشارة إلى أنّ المصدر من الموارد المخصصة (وأنك على استعداد للتخلي عن الميزات في المقابل).
ملاحظات
يود فريق Chrome إبلاغك إذا كنت تستخدم Origin-Agent-Cluster
أو تفكر في استخدامه.
. تساعدنا مصلحتك العامة ودعمك في منح الأولوية للميزات وعرض ميزات أخرى
لموردي المتصفح بمدى أهميتها. تغريدة على @ChromiumDev و
تتيح لـ Chrome Devrel معرفة أفكارك وتجاربك.
إذا كان لديك أسئلة أخرى بشأن المواصفات أو تفاصيل آلية عمل الميزة، يمكنك
يُرجى الإبلاغ عن مشكلة في مستودع HTML القياسي في GitHub. وإذا
أي مشكلات في تنفيذ Chrome، يمكنك الإبلاغ عن الخطأ في
new.crbug.com
مع تعيين حقل المكونات على Internals>Sandbox>SiteIsolation
.
مزيد من المعلومات
لمزيد من المعلومات حول مجموعات الوكلاء المستنِدة إلى المصدر، يمكنك الاطّلاع على التفاصيل على الروابط التالية:
- العرض التوضيحي والعرض التوضيحي المصدر
- الشرح
- المواصفات
- تتبع الأخطاء: Chrome، Firefox Safari