طلب عزل الأداء باستخدام عنوان Origin-Agent-Cluster

عنوان استجابة HTTP جديد للحدّ من البرمجة النصية على مستوى النطاق وطلب موارد مخصّصة من المتصفّح

Domenic Denicola
Domenic Denicola

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.

مزيد من المعلومات

لمزيد من المعلومات حول مجموعات الوكلاء المستنِدة إلى المصدر، يمكنك الاطّلاع على التفاصيل على الروابط التالية: