تتيح ميزة "حظر الوصول من نطاقات أخرى" لصفحة الويب استخدام ميزات فعّالة، مثل SharedArrayBuffer. توضّح هذه المقالة كيفية تفعيل ميزة "حظر الوصول من نطاقات أخرى" على موقعك الإلكتروني.
يوضّح لك هذا الدليل كيفية تفعيل ميزة "حظر الوصول من نطاقات أخرى". تكون ميزة "حظر الوصول من نطاقات أخرى"
مطلوبة إذا أردت استخدام
SharedArrayBuffer،
performance.measureUserAgentSpecificMemory()،
أو مؤقّت عالي الدقة بدقة أفضل.
إذا كنت تنوي تفعيل ميزة العزل متعدد المصادر، عليك تقييم تأثير ذلك في الموارد الأخرى متعددة المصادر على موقعك الإلكتروني، مثل مواضع الإعلانات.
تحديد مكان استخدام SharedArrayBuffer في موقعك الإلكتروني
اعتبارًا من الإصدار 92 من Chrome، لن تعمل الوظائف التي تستخدم SharedArrayBuffer
بدون ميزة "حظر الوصول من نطاقات أخرى". إذا انتقلت إلى هذه الصفحة
بسبب رسالة إيقاف نهائي لـ SharedArrayBuffer، من المحتمل أنّ
موقعك الإلكتروني أو أحد المَراجع المضمّنة فيه يستخدم SharedArrayBuffer.
لضمان عدم حدوث أي أعطال في موقعك الإلكتروني بسبب الإيقاف النهائي، ابدأ بـ
تحديد مكان استخدامها.
إذا لم تكن متأكدًا من مكان استخدام SharedArrayBuffer في موقعك الإلكتروني، هناك طريقتان لمعرفة ذلك:
- استخدام "أدوات مطوري البرامج في Chrome"
- (خيار متقدّم) استخدام ميزة "الإبلاغ عن الإيقاف النهائي"
إذا كنت تعرف مكان استخدام SharedArrayBuffer، انتقِل إلى تحليل تأثير ميزة "حظر الوصول من نطاقات أخرى".
استخدام "أدوات مطوري البرامج في Chrome"
تسمح "أدوات مطوري البرامج في Chrome" للمطوّرين بفحص المواقع الإلكترونية.
- افتح "أدوات مطوري البرامج في Chrome" على الصفحة التي تشكّ في أنّها قد تستخدم
SharedArrayBuffer. - انقر على لوحة وحدة التحكّم.
- إذا كانت الصفحة تستخدم
SharedArrayBuffer، ستظهر الرسالة التالية:[Deprecation] SharedArrayBuffer will require cross-origin isolation as of M92, around May 2021. See for more details. common-bundle.js:535
- يشير اسم الملف ورقم السطر في نهاية الرسالة (على سبيل المثال،
common-bundle.js:535) إلى مصدرSharedArrayBufferإذا كانت مكتبة خارجية، عليك التواصل مع المطوّر لإصلاح المشكلة. إذا تم تنفيذها كجزء من موقعك الإلكتروني، اتّبِع الدليل أدناه لتفعيل ميزة "حظر الوصول من نطاقات أخرى".
(خيار متقدّم) استخدام ميزة "الإبلاغ عن الإيقاف النهائي"
تتضمّن بعض المتصفّحات وظيفة إبلاغ عن إيقاف نهائي لواجهات برمجة التطبيقات إلى نقطة نهاية محدّدة.
- يمكنك إعداد خادم لتقارير الإيقاف النهائي والحصول على عنوان URL للإبلاغ. يمكنك تحقيق ذلك إما باستخدام خدمة عامة أو إنشاء خدمة بنفسك.
- باستخدام عنوان URL، اضبط عنوان HTTP التالي على الصفحات التي من المحتمل أن تعرض
SharedArrayBuffer.Report-To: {"group":"default","max_age":86400,"endpoints":[{"url":"THE_DEPRECATION_ENDPOINT_URL"}]} - بعد أن يبدأ العنوان في الانتشار، من المفترض أن تبدأ نقطة النهاية التي سجّلتها في جمع تقارير الإيقاف النهائي.
يمكنك الاطّلاع على مثال على عملية التنفيذ.
تحليل تأثير ميزة "حظر الوصول من نطاقات أخرى"
سيكون من الرائع لو كان بإمكانك تقييم تأثير تفعيل ميزة "حظر الوصول من نطاقات أخرى" على موقعك الإلكتروني بدون إحداث أي أعطال. يسمح لك عنوانا HTTP
Cross-Origin-Opener-Policy-Report-Only و
Cross-Origin-Embedder-Policy-Report-Only
بذلك.
- اضبط
Cross-Origin-Opener-Policy-Report-Only: same-originعلى المستند ذي المستوى الأعلى. كما يشير الاسم، لا يرسل هذا العنوان سوى تقارير عن التأثير الذي سيحدثهCOOP: same-originعلى موقعك الإلكتروني، ولن يؤدي في الواقع إلى إيقاف التواصل مع النوافذ المنبثقة. - يمكنك إعداد ميزة الإبلاغ وضبط خادم ويب لتلقّي التقارير وحفظها.
- اضبط
Cross-Origin-Embedder-Policy-Report-Only: require-corpعلى المستند ذي المستوى الأعلى. مرة أخرى، يتيح لك هذا العنوان الاطّلاع على تأثير تفعيلCOEP: require-corpبدون التأثير في أداء موقعك الإلكتروني بعد. يمكنك ضبط هذا العنوان لإرسال التقارير إلى خادم الإبلاغ نفسه الذي أعددته في الخطوة السابقة.
التخفيف من تأثير ميزة "حظر الوصول من نطاقات أخرى"
بعد تحديد المَراجع التي ستتأثر بميزة "حظر الوصول من نطاقات أخرى"، إليك إرشادات عامة حول كيفية تفعيل هذه المَراجع التي يتم الوصول إليها من نطاقات أخرى:
- بالنسبة إلى المَراجع متعدّدة المصادر، مثل الصور والنصوص البرمجية وأوراق الأنماط وإطارات iframe وغيرها، اضبط العنوان
Cross-Origin-Resource-Policy:cross-origin. بالنسبة إلى المَراجع التي يتم الوصول إليها من الموقع الإلكتروني نفسه، اضبطCross-Origin-Resource-Policy:same-site - بالنسبة إلى المَراجع التي يمكن تحميلها باستخدام CORS، تأكَّد من تفعيلها عن طريق ضبط السمة
crossoriginفي علامة HTML الخاصة بها (على سبيل المثال،<img src="example.jpg" crossorigin>). بالنسبة إلى طلبات JavaScript، تأكَّد من ضبطrequest.modeعلىcors. - إذا أردت استخدام ميزات فعّالة، مثل
SharedArrayBuffer، داخل iframe تم تحميله، ألحِقallow="cross-origin-isolated"بعلامة<iframe>. - إذا كانت المَراجع متعدّدة المصادر التي تم تحميلها في إطارات iframe أو نصوص برمجية للمنفّذ تتضمّن طبقة أخرى من إطارات iframe أو نصوص برمجية للمنفّذ، عليك تطبيق الخطوات الموضّحة في هذا القسم بشكلٍ متكرّر قبل المتابعة.
- بعد التأكّد من تفعيل جميع الموارد متعدّدة المصادر، اضبط العنوان
Cross-Origin-Embedder-Policy: require-corpعلى إطارات iframe والنصوص البرمجية للمنفِّذ (هذا الإجراء مطلوب بغض النظر عن ما إذا كان يتم الوصول إلى الموارد من المصدر نفسه أو من مصادر أخرى). - تأكَّد من عدم وجود نوافذ منبثقة متعدّدة المصادر تتطلّب التواصل من خلال
postMessage(). لا يمكن أن تظل هذه النوافذ تعمل عند تفعيل ميزة "حظر الوصول من نطاقات أخرى". يمكنك نقل عملية التواصل إلى مستند آخر لا يتم فيه حظر الوصول من نطاقات أخرى، أو استخدام طريقة تواصل مختلفة (على سبيل المثال، طلبات HTTP).
تفعيل ميزة "حظر الوصول من نطاقات أخرى"
بعد التخفيف من تأثير ميزة "حظر الوصول من نطاقات أخرى"، إليك إرشادات عامة لتفعيلها:
- اضبط العنوان
Cross-Origin-Opener-Policy: same-originعلى المستند ذي المستوى الأعلى. إذا كنت قد ضبطتCross-Origin-Opener-Policy-Report-Only: same-origin، عليك استبداله. يؤدي ذلك إلى حظر التواصل بين المستند ذي المستوى الأعلى والنوافذ المنبثقة. - اضبط العنوان
Cross-Origin-Embedder-Policy: require-corpعلى المستند ذي المستوى الأعلى. إذا كنت قد ضبطتCross-Origin-Embedder-Policy-Report-Only: require-corp، عليك استبداله. سيؤدي ذلك إلى حظر تحميل المَراجع متعدّدة المصادر التي لم يتم تفعيلها. - تأكَّد من أنّ
self.crossOriginIsolatedتعرضtrueفي وحدة التحكّم للتحقّق من أنّ صفحتك تحظر الوصول من نطاقات أخرى.