مجموعات المواقع الإلكترونية ذات الصلة: دليل المطوِّر

مجموعات المواقع الإلكترونية ذات الصلة (RWS) هي آلية لمنصّة الويب تساعد المتصفّحات في فهم العلاقات بين مجموعة من النطاقات. ويسمح ذلك للمتصفحات باتخاذ قرارات رئيسية لتفعيل وظائف معيّنة على الموقع الإلكتروني (مثل ما إذا كان سيتم السماح بالوصول إلى ملفات تعريف الارتباط على مستوى المواقع الإلكترونية) وتقديم هذه المعلومات للمستخدمين.

بينما يوقف Chrome ملفات تعريف الارتباط التابعة لجهات خارجية نهائيًا، يهدف إلى الحفاظ على حالات الاستخدام الرئيسية على الويب مع تحسين الخصوصية للمستخدمين. على سبيل المثال، تعتمد العديد من المواقع الإلكترونية على نطاقات متعددة لتقديم تجربة واحدة للمستخدم. قد تحتاج المؤسسات إلى الاحتفاظ بنطاقات مختلفة من المستوى الأعلى لاستخدامات متعدّدة، مثل نطاقات خاصة ببلدان معيّنة أو نطاقات خدمات لاستضافة الصور أو الفيديوهات. تتيح ميزة "مجموعات المواقع الإلكترونية ذات الصلة" للمواقع الإلكترونية مشاركة البيانات على مستوى النطاقات، باستخدام عناصر تحكّم محدّدة.

على مستوى عالٍ، مجموعة المواقع الإلكترونية المرتبطة هي مجموعة من النطاقات التي تتضمّن "مجموعة أساسية" واحدة وربما "أعضاء مجموعة" متعدّدين.

في المثال التالي، يسرد primary النطاق الأساسي، ويسرد associatedSites النطاقات التي تستوفي متطلبات المجموعة الفرعية المرتبطة.

{
  "primary": "https://primary.com",
  "associatedSites": ["https://associate1.com", "https://associate2.com", "https://associate3.com"]
}

قائمة "مجموعات المواقع الإلكترونية ذات الصلة" الأساسية هي قائمة علنية بتنسيق ملف JSON مستضافة في مستودع GitHub الخاص بمجموعات المواقع الإلكترونية ذات الصلة، والذي يُعدّ مصدر المعلومات الموثوقة لجميع المجموعات. يستخدم Chrome هذا الملف لتطبيقه على سلوكه.

لا يمكن إلا للمستخدمين الذين لديهم سيطرة إدارية على نطاق إنشاء مجموعة تتضمّن هذا النطاق. على مرسلي العينات الإفصاح عن العلاقة بين كل "عضو في المجموعة" و "المجموعة الأساسية". يمكن أن تتضمّن عناصر المجموعة مجموعة من أنواع النطاقات المختلفة، ويجب أن تكون جزءًا من مجموعة فرعية استنادًا إلى حالة استخدام.

إذا كان تطبيقك يعتمد على الوصول إلى ملفات تعريف الارتباط على جميع المواقع الإلكترونية (المعروفة أيضًا باسم ملفات تعريف الارتباط التابعة لجهات خارجية) على جميع المواقع الإلكترونية ضمن مجموعة المواقع الإلكترونية ذات الصلة نفسها، يمكنك استخدام Storage Access API (SAA) وrequestStorageAccessFor API لطلب الوصول إلى ملفات تعريف الارتباط هذه. استنادًا إلى المجموعة الفرعية التي يُعدّ كل موقع إلكتروني جزءًا منها، قد يعالج المتصفّح الطلب بشكلٍ مختلف.

لمعرفة المزيد من المعلومات حول عملية إرسال المجموعات ومتطلباتها، اطّلِع على إرشادات الإرسال. ستخضع المجموعات التي تم إرسالها لفحوصات فنية مختلفة للتحقّق من صحتها.

تُعدّ "مجموعات المواقع الإلكترونية المرتبطة" مناسبة للحالات التي تحتاج فيها المؤسسة إلى شكل من أشكال الهوية المشتركة على مستوى مواقع إلكترونية مختلفة من المستوى الأعلى.

في ما يلي بعض حالات استخدام مجموعات المواقع الإلكترونية المرتبطة:

  • تخصيص البلد: الاستفادة من المواقع المترجَمة مع الاعتماد على بنية أساسية مشترَكة (قد تعتمد example.co.uk على خدمة تستضيفها example.ca)
  • دمج نطاق الخدمة: الاستفادة من نطاقات الخدمة التي لا يتفاعل معها المستخدمون مباشرةً، ولكنّها تقدّم خدمات على مواقع المؤسسة نفسها (example-cdn.com)
  • فصل محتوى المستخدمين: الوصول إلى البيانات على نطاقات مختلفة تفصل المحتوى الذي يحمّله المستخدم عن محتوى الموقع الإلكتروني الآخر لأسباب تتعلق بالأمان، مع السماح للنطاق المحصور بالوصول إلى ملفات تعريف الارتباط الخاصة بالمصادقة (والأخرى) إذا كنت تعرض محتوى غير نشط حمّله المستخدمون، قد تتمكّن أيضًا من استضافته بأمان على النطاق نفسه من خلال اتّباع أفضل الممارسات.
  • المحتوى المضمَّن والمُعتمَد: السماح بتضمين محتوى من جميع المواقع الإلكترونية المرتبطة (الفيديوهات أو المستندات أو المراجع المخصّصة للمستخدم الذي سجّل الدخول إلى الموقع الإلكتروني من المستوى الأعلى)
  • تسجيل الدخول إتاحة تسجيل الدخول في جميع المواقع التابعة قد تكون FedCM API مناسبة أيضًا لبعض حالات الاستخدام.
  • إحصاءات Google: نشر الإحصاءات وقياس تجارب المستخدِمين على مستوى المواقع الإلكترونية التابعة لتحسين جودة الخدمات

Storage Access API

Browser Support

  • Chrome: 119.
  • Edge: 85.
  • Firefox: 65.
  • Safari: 11.1.

Source

توفّر واجهة برمجة التطبيقات Storage Access API (SAA) طريقة للمحتوى المضمّن من مصادر متعددة للوصول إلى مساحة التخزين التي لا يمكنه عادةً الوصول إليها إلا في سياق الطرف الأول.

يمكن للموارد المضمّنة استخدام طرق SAA للتحقّق مما إذا كان بإمكانها حاليًا الوصول إلى مساحة التخزين، وطلب الوصول من وكيل المستخدم.

عند حظر ملفات تعريف الارتباط التابعة لجهات خارجية ولكن تم تفعيل مجموعات المواقع الإلكترونية ذات الصلة (RWS)، سيمنح Chrome الإذن تلقائيًا في سياقات RWS، وسيعرض طلبًا على المستخدم في حال عدم تفعيله. ("سياق داخل إطار عمل RWS" هو سياق، مثل إطار iframe، يكون الموقع الإلكتروني المضمّن والموقع الإلكتروني من المستوى الأعلى في إطار عمل RWS نفسه).

التحقّق من إمكانية الوصول إلى مساحة التخزين وطلبها

للتحقّق مما إذا كان بإمكانها الوصول حاليًا إلى مساحة التخزين، يمكن للمواقع الإلكترونية المضمّنة استخدام طريقة Document.hasStorageAccess().

تُعرِض الطريقة وعدًا يتم حلّه بقيمة منطقية تشير إلى ما إذا كان المستند قد تمكّن من الوصول إلى ملفات تعريف الارتباط الخاصة به أم لا. ويُرجع الوعد أيضًا القيمة "صحيح" إذا كان عنصر iframe من المصدر نفسه للإطار العلوي.

لطلب الوصول إلى ملفات تعريف الارتباط في سياق على مستوى المواقع الإلكترونية، يمكن للمواقع الإلكترونية المضمّنة استخدام Document.requestStorageAccess() (rSA).

من المفترض أن يتم استدعاء واجهة برمجة التطبيقات requestStorageAccess() من داخل إطار iframe. يجب أن يكون قد تم تفاعل المستخدم مع إطار iframe هذا (إيماءة مستخدِم، وهي مطلوبة من جميع المتصفّحات)، ولكن يتطلّب Chrome أيضًا أن يكون المستخدِم قد زار في وقت ما خلال آخر 30 يومًا الموقع الإلكتروني الذي يملك إطار iframe هذا وتفاعل معه تحديدًا، كوثيقة من المستوى الأعلى، وليس في إطار iframe.

يعرض requestStorageAccess() وعدًا يحدد ما إذا تم منح الإذن بالوصول إلى مساحة التخزين. يتم رفض الوعد، مع ذكر السبب، إذا تم رفض الوصول لأي سبب.

requestStorageAccessFor في Chrome

Browser Support

  • Chrome: 119.
  • Edge: 119.
  • Firefox: not supported.
  • Safari: not supported.

Source

لا تسمح Storage Access API للمواقع الإلكترونية المضمّنة إلا بطلب الوصول إلى مساحة التخزين من داخل عناصر <iframe> التي تلقّت تفاعلًا من المستخدم.

يشكّل ذلك تحديات في استخدام واجهة برمجة التطبيقات Storage Access API للمواقع الإلكترونية ذات المستوى الأعلى التي تستخدم صورًا أو علامات نصوص برمجية على مستوى الموقع الإلكتروني وتتطلّب ملفات تعريف الارتباط.

لحلّ هذه المشكلة، نفَّذ Chrome طريقة تتيح للمواقع الإلكترونية ذات المستوى الأعلى طلب الوصول إلى مساحة التخزين نيابةً عن مصادر معيّنة باستخدام Document.requestStorageAccessFor() (rSAFor).

 document.requestStorageAccessFor('https://target.site')

من المفترض أن يتم استدعاء واجهة برمجة التطبيقات requestStorageAccessFor() من خلال مستند من المستوى الأعلى. يجب أن يكون هذا المستند قد تلقّى أيضًا تفاعلًا من المستخدِم. ولكن على عكس requestStorageAccess()، لا يتحقّق Chrome من حدوث تفاعل في مستند من المستوى الأعلى خلال آخر 30 يومًا لأنّ المستخدم يكون على الصفحة.

التحقّق من أذونات الوصول إلى مساحة التخزين

يستند الوصول إلى بعض ميزات المتصفّح، مثل الكاميرا أو الموقع الجغرافي، إلى الأذونات التي يمنحها المستخدم. توفّر واجهة برمجة التطبيقات Permissions API طريقة للتحقّق من حالة الإذن بالوصول إلى واجهة برمجة تطبيقات، سواء تم منحه أو رفضه أو كان يتطلّب شكلاً من أشكال تفاعل المستخدم، مثل النقر على طلب أو التفاعل مع الصفحة.

يمكنك الاستعلام عن حالة الإذن باستخدام navigator.permissions.query().

للتحقّق من إذن الوصول إلى مساحة التخزين للسياق الحالي، عليك إدخال سلسلة 'storage-access':

navigator.permissions.query({name: 'storage-access'})

للتحقّق من إذن الوصول إلى مساحة التخزين لمصدر محدّد، عليك إدخال سلسلة 'top-level-storage-access':

navigator.permissions.query({name: 'top-level-storage-access', requestedOrigin: 'https://target.site'})

يُرجى العلم أنّه لحماية سلامة المصدر المضمّن، لا يتحقّق هذا الإجراء إلا من الأذونات التي منحها المستند من المستوى الأعلى باستخدام document.requestStorageAccessFor.

استنادًا إلى ما إذا كان يمكن منح الإذن تلقائيًا أو كان يتطلب إيماءة من المستخدم، سيتم عرض prompt أو granted.

نموذج لكل إطار

تنطبق أذونات الوصول المحدود إلى الذاكرة (rSA) لكل إطار. ويتم التعامل مع أذونات الوصول المحدود إلى الذاكرة (rSA) وأذونات الوصول المحدود إلى الذاكرة لمعالجة الصور (rSAFor) على أنّها أذونات منفصلة.

سيحتاج كل إطار جديد إلى طلب الوصول إلى مساحة التخزين بشكلٍ فردي، وسيتم منحه إذن الوصول تلقائيًا. لا يتطلّب الطلب الأول سوى إيماءة المستخدم، ولن تحتاج أي طلبات لاحقة يبدأها إطار iframe، مثل التنقّل أو الموارد الفرعية، إلى الانتظار إلى أن يُجري المستخدم إيماءة، لأنّ ذلك سيتم منحه لجلسة التصفّح من خلال الطلب الأوّلي.

سيؤدي إعادة تحميل عنصر iframe أو إعادة إنشائه أو إعادة تحميله إلى طلب الوصول مرة أخرى.

يجب أن تحدّد ملفات تعريف الارتباط السمتَين SameSite=None وSecure لأنّ بروتوكول rSA لا يمنح إذن الوصول إلا لملفات تعريف الارتباط التي تم وضع علامة عليها مسبقًا للاستخدام في سياقات مواقع إلكترونية متعددة.

إنّ ملفات تعريف الارتباط التي تحتوي على سمة SameSite=Lax أو SameSite=Strict أو بدون سمة SameSite مخصّصة لاستخدام الطرف الأول فقط ولن تتم مطلقًا مشاركتها في سياق مواقع إلكترونية متعددة بغض النظر عن استخدام مساعد بيع بالتجزئة.

الأمان

بالنسبة إلى rSAFor، تتطلّب طلبات الموارد الفرعية عناوين مشاركة الموارد المتعدّدة المصادر (CORS) أو السمة crossorigin في الموارد، ما يضمن الموافقة الصريحة.

أمثلة على التنفيذ

طلب الوصول إلى مساحة التخزين من إطار iframe مضمّن ومتعدد المصادر

رسم بياني يعرض موقعًا إلكترونيًا مضمّنًا في موقع إلكتروني من المستوى الأعلى
استخدام requestStorageAccess() في عملية تضمين على موقع إلكتروني آخر:

التحقّق من إمكانية الوصول إلى مساحة التخزين

للتحقّق مما إذا كان لديك إذن الوصول إلى مساحة التخزين، استخدِم document.hasStorageAccess().

إذا تم حلّ الوعد على أنّه صحيح، يمكنك الوصول إلى مساحة التخزين في سياق المواقع الإلكترونية المتعددة. إذا كانت القيمة false، عليك طلب إذن الوصول إلى مساحة التخزين.

document.hasStorageAccess().then((hasAccess) => {
    if (hasAccess) {
      // You can access storage in this context
    } else {
      // You have to request storage access
    }
});

طلب الوصول إلى مساحة التخزين

إذا كنت بحاجة إلى طلب إذن الوصول إلى مساحة التخزين، تحقّق أولاً من إذن الوصول إلى مساحة التخزين navigator.permissions.query({name: 'storage-access'}) لمعرفة ما إذا كان ذلك يتطلّب إيماءة من المستخدم أو يمكن منحه تلقائيًا.

إذا كان الإذن هو granted، يمكنك طلب document.requestStorageAccess() ومن المفترض أن يتم تنفيذه بدون إيماءة من المستخدم.

إذا كانت حالة الإذن هي prompt، عليك بدء طلب document.requestStorageAccess() بعد إجراء المستخدم إيماءة، مثل النقر على زر.

مثال:

navigator.permissions.query({name: 'storage-access'}).then(res => {
  if (res.state === 'granted') {
    // Permission has already been granted
    // You can request storage access without any user gesture
    rSA();
  } else if (res.state === 'prompt') {
    // Requesting storage access requires user gesture
    // For example, clicking a button
    const btn = document.createElement("button");
    btn.textContent = "Grant access";
    btn.addEventListener('click', () => {
      // Request storage access
      rSA();
    });
    document.body.appendChild(btn);
  }
});

function rSA() {
  if ('requestStorageAccess' in document) {
    document.requestStorageAccess().then(
      (res) => {
        // Use storage access
      },
      (err) => {
        // Handle errors
      }
    );
  }
}

ستحصل الطلبات اللاحقة من داخل الإطار أو عمليات التنقّل أو الموارد الفرعية تلقائيًا على إذن بالوصول إلى ملفات تعريف الارتباط على جميع المواقع الإلكترونية. تُعرِض hasStorageAccess() القيمة "صحيح"، وسيتم إرسال ملفات تعريف الارتباط على مستوى المواقع الإلكترونية المختلفة من مجموعة المواقع الإلكترونية ذات الصلة نفسها في هذه الطلبات بدون أيّ استدعاءات إضافية لـ JavaScript.

مخطّط بياني يعرض استخدام requestStorageAccessFor() على موقع إلكتروني من المستوى الأعلى وليس ضمن عملية دمج
استخدام requestStorageAccessFor() على موقع إلكتروني من المستوى الأعلى لمصدر مختلف

يمكن للمواقع الإلكترونية من المستوى الأعلى استخدام requestStorageAccessFor() لطلب الوصول إلى مساحة التخزين نيابةً عن مصادر معيّنة.

لا يتحقّق hasStorageAccess() إلا مما إذا كان الموقع الإلكتروني الذي يستدعيه لديه إذن الوصول إلى مساحة التخزين، وبالتالي يمكن لموقع إلكتروني من المستوى الأعلى التحقّق من الأذونات لمصدر آخر.

لمعرفة ما إذا كان سيتم سؤال المستخدم أو ما إذا سبق أن تم منح إذن الوصول إلى مساحة التخزين لمصدر محدّد، يُرجى الاتصال على navigator.permissions.query({name: 'top-level-storage-access', requestedOrigin: 'https://target.site'}).

إذا كان الإذن هو granted، يمكنك الاتصال بالرقم document.requestStorageAccessFor('https://target.site'). من المفترض أن تنجح هذه العملية بدون إيماءة من المستخدم.

إذا كان الإذن هو prompt، عليك ربط طلب document.requestStorageAccessFor('https://target.site') بإشارة المستخدم، مثل النقر على زر.

مثال:

navigator.permissions.query({name:'top-level-storage-access',requestedOrigin: 'https://target.site'}).then(res => {
  if (res.state === 'granted') {
    // Permission has already been granted
    // You can request storage access without any user gesture
    rSAFor();
  } else if (res.state === 'prompt') {
    // Requesting storage access requires user gesture
    // For example, clicking a button
    const btn = document.createElement("button");
    btn.textContent = "Grant access";
    btn.addEventListener('click', () => {
      // Request storage access
      rSAFor();
    });
    document.body.appendChild(btn);
  }
});

function rSAFor() {
  if ('requestStorageAccessFor' in document) {
    document.requestStorageAccessFor().then(
      (res) => {
        // Use storage access
      },
      (err) => {
        // Handle errors
      }
    );
  }
}

بعد إجراء طلب requestStorageAccessFor() ناجح، ستتضمّن الطلبات من مواقع إلكترونية مختلفة ملفات تعريف الارتباط إذا كانت تتضمّن CORS أو سمة crossorigin، لذا قد تحتاج المواقع الإلكترونية إلى الانتظار قبل بدء طلب.

يجب أن تستخدم الطلبات الخيار credentials: 'include' ويجب أن تتضمّن الموارد سمة crossorigin="use-credentials".

function checkCookie() {
    fetch('https://related-website-sets.glitch.me/getcookies.json', {
        method: 'GET',
        credentials: 'include'
      })
      .then((response) => response.json())
      .then((json) => {
      // Do something
      });
  }

كيفية الاختبار على الجهاز

المتطلبات الأساسية

لاختبار مجموعات المواقع الإلكترونية ذات الصلة محليًا، استخدِم الإصدار 119 من Chrome أو إصدارًا أحدث تم تشغيله من سطر الأوامر وفعِّل test-third-party-cookie-phaseout علامة Chrome.

تفعيل الميزة التجريبية في Chrome

لتفعيل علامة Chrome اللازمة، انتقِل إلى chrome://flags#test-third-party-cookie-phaseout من شريط العناوين وغيِّر العلامة إلى Enabled. احرص على إعادة تشغيل المتصفّح بعد تغيير الإشارات.

لتشغيل Chrome باستخدام مجموعة المواقع الإلكترونية ذات الصلة التي تمّ الإعلان عنها محليًا، أنشئ عنصر JSON يحتوي على عناوين URL التي تكون أعضاء في مجموعة وتمريرها إلى --use-related-website-set.

مزيد من المعلومات عن كيفية تشغيل Chromium باستخدام العلامات

--use-related-website-set="{\"primary\": \"https://related-website-sets.glitch.me\", \"associatedSites\": [\"https://rws-member-1.glitch.me\"]}" \
https://related-website-sets.glitch.me/

مثال

لتفعيل ميزة "مجموعات المواقع الإلكترونية ذات الصلة" محليًا، عليك تفعيل test-third-party-cookie-phaseout في chrome://flags وتشغيل Chrome من سطر الأوامر باستخدام العلامة --use-related-website-set مع عنصر JSON الذي يحتوي على عناوين URL التي تكون أعضاء في مجموعة.

--use-related-website-set="{\"primary\": \"https://related-website-sets.glitch.me\", \"associatedSites\": [\"https://rws-member-1.glitch.me\"]}" \
https://related-website-sets.glitch.me/

التأكّد من إمكانية الوصول إلى ملفات تعريف الارتباط على جميع المواقع

اطلب بيانات واجهات برمجة التطبيقات (rSA أو rSAFor) من المواقع الإلكترونية التي يتم اختبارها وتحقّق من إمكانية الوصول إلى ملفات تعريف الارتباط على جميع المواقع الإلكترونية.

اتّبِع الخطوات التالية لتحديد العلاقة بين النطاقات وتحديد المجموعة الفرعية التي تشكّل جزءًا منها.

1. تحديد RWS

حدِّد النطاقات ذات الصلة، بما في ذلك مجموعة المواقع الإلكترونية الأساسية ومجموعة المواقع الإلكترونية الفرعية التي ستكون جزءًا من مجموعة المواقع الإلكترونية ذات الصلة. حدِّد أيضًا نوع المجموعة الفرعية التي ينتمي إليها كل عضو في المجموعة.

2. إنشاء العينة التي سيتم إرسالها إلى RWS

أنشئ نسخة محلية (نسخة طبق الأصل أو نسخة فرعية) من مستودع GitHub. في فرع جديد، عليك إجراء التغييرات على ملف related_website_sets.JSON لتعكس مجموعتك. لضمان أنّ المجموعة تتضمّن تنسيق JSON وبنية صحيحَين، يمكنك استخدام أداة إنشاء ملفات JSON.

3- التأكّد من استيفاء خدمة RWS للمتطلبات الفنية

تأكَّد من توفّر متطلبات تشكيل المجموعة و متطلبات التحقّق من المجموعة.

4. اختبار RWS على الجهاز

قبل إنشاء طلب سحب (PR) لإرسال مجموعة الاختبار، عليك اختبار العينة التي تم إرسالها على الجهاز للتأكّد من اجتيازها لجميع عمليات التحقّق المطلوبة.

5- إرسال ملف RWS

أرسِل مجموعة المواقع الإلكترونية المرتبطة من خلال إنشاء طلب إعادة نظر في ملف related_website_sets.JSON الذي يستضيف فيه Chrome قائمة مجموعات المواقع الإلكترونية المرتبطة الأساسية. (يجب أن يكون لديك حساب على GitHub لإنشاء طلبات إعادة النظر، وعليك التوقيع على اتفاقية ترخيص الم contributor (CLA) قبل أن تتمكّن من المساهمة في القائمة).

بعد إنشاء طلب التغيير، يتم إكمال سلسلة من عمليات التحقّق لمحاولة التأكّد من استيفاء المتطلبات الواردة في الخطوة 3، مثل التأكّد من أنّك وقّعت على اتفاقية ترخيص المطوّرين وأنّ ملف .well-known صالح.

في حال نجاح عملية الربط، سيشير الإصدار إلى أنّه تم اجتياز عمليات التحقّق. سيتم دمج طلبات إعادة النظر التي تمت الموافقة عليها يدويًا في دفعات إلى قائمة مجموعات المواقع الإلكترونية المرتبطة الأساسية مرة واحدة في الأسبوع (الثلاثاء في الساعة 12 ظهرًا بالتوقيت الشرقي). في حال تعذّر اجتياز أيّ من عمليات التحقّق، سيتم إرسال إشعار إلى مُرسِل العينة يفيد بتعذُّر إرسال العينة على GitHub. يمكن لمُرسِل الطلب تصحيح الأخطاء وتعديل طلب المراجعة، مع مراعاة ما يلي:

  • إذا تعذّر إرسال طلب إعادة النظر، ستوفّر رسالة الخطأ معلومات إضافية حول سبب تعذّر الإرسال. (مثال).
  • يتم إجراء جميع عمليات التحقّق الفنية التي تحكم عمليات الإرسال على GitHub، وبالتالي، يمكن الاطّلاع على جميع حالات تعذُّر الإرسال الناتجة عن عمليات التحقّق الفنية على GitHub.

سياسات المؤسسة

يتضمّن Chrome سياستَين لتلبية احتياجات مستخدمي المؤسسات:

  • يمكن للأنظمة التي قد لا تتمكّن من الدمج مع "مجموعات المواقع الإلكترونية ذات الصلة" إيقاف ميزة "مجموعات المواقع الإلكترونية ذات الصلة" في جميع إصدارات Chrome للمؤسسات باستخدام سياسة RelatedWebsiteSetsEnabled.
  • تحتوي بعض أنظمة المؤسسات على مواقع إلكترونية داخلية فقط (مثل شبكة داخلية) تتضمّن نطاقات قابلة للتسجيل تختلف عن النطاقات الواردة في مجموعة المواقع الإلكترونية ذات الصلة. إذا كان يحتاجون إلى التعامل مع هذه المواقع الإلكترونية كجزء من مجموعة المواقع الإلكترونية المرتبطة بدون عرضها علنًا (لأنّ النطاقات قد تكون سرية)، يمكنهم إضافة قائمة مجموعات المواقع الإلكترونية المرتبطة العامة أو إلغاء هذه القائمة باستخدام سياسة RelatedWebsiteSetsOverrides.

يحلّ Chrome أي تداخل بين مجموعتَي الإصدار العلني والإصدار المخصّص للمؤسسات بطريقتَين ، بناءً على ما إذا تم تحديد replacemements أو additions.

على سبيل المثال، بالنسبة إلى المجموعة العامة {primary: A, associated: [B, C]}:

replacements: {primary: C, associated: [D, E]}
تمتص مجموعة المؤسسات الموقع الإلكتروني المشترك لتشكيل مجموعة جديدة.
المجموعات الناتجة: {primary: A, associated: [B]}
{primary: C, associated: [D, E]}
additions: {primary: C, associated: [D, E]}
يتم دمج المجموعات المتاحة للجميع والمجموعات المتاحة للمؤسسات.
المجموعة الناتجة: {primary: C, associated: [A, B, D, E]}

"طلب المستخدم" و "إيماءة المستخدم"

يختلف "طلب المستخدم" عن "إيماءة المستخدم". لن يعرض Chrome طلب إذن للمستخدمين بشأن المواقع الإلكترونية التي تندرج ضمن مجموعة المواقع الإلكترونية ذات الصلة نفسها، ولكن سيظل Chrome يتطلّب تفاعل المستخدم مع الصفحة. قبل منح الإذن، يطلب Chrome استخدام إيماءة مستخدِم، ويُشار إليها أيضًا باسم "تفاعل المستخدِم" أو "تفعيل المستخدِم". ويعود السبب في ذلك إلى أنّ استخدام واجهة برمجة التطبيقات Storage Access API خارج سياق مجموعة المواقع الإلكترونية ذات الصلة (أي requestStorageAccess()) يتطلّب أيضًا إيماءة من المستخدِم، وذلك بسبب مبادئ تصميم منصّة الويب.

الوصول إلى ملفات تعريف الارتباط أو مساحة التخزين في المواقع الإلكترونية الأخرى

لا تُدمج "مجموعات المواقع الإلكترونية ذات الصلة" مساحة التخزين للمواقع الإلكترونية المختلفة، بل تسمح فقط بإجراء مكالمات requestStorageAccess() أسهل (بدون طلب). لا تعمل "مجموعات المواقع الإلكترونية ذات الصلة" إلا على تقليل الصعوبات التي يواجهها المستخدمون عند استخدام Storage Access API، ولكنها لا تحدد ما يجب فعله بعد استعادة إمكانية الوصول. إذا كان الموقعان الإلكترونيان "أ" و"ب" مختلفَين في مجموعة المواقع الإلكترونية ذات الصلة نفسها، وكان الموقع "أ" يضمّن الموقع "ب"، يمكن للموقع "ب" طلب requestStorageAccess() والوصول إلى مساحة التخزين التابعة للطرف الأول بدون مطالبة المستخدِم بذلك. لا تُجري ميزة "مجموعات المواقع الإلكترونية المرتبطة" أي تواصل بين المواقع الإلكترونية. على سبيل المثال، لن يؤدي إعداد مجموعة مواقع إلكترونية ذات صلة إلى بدء إرسال ملفات تعريف الارتباط التي تنتمي إلى الموقع الإلكتروني "ب" إلى الموقع الإلكتروني "أ". إذا أردت مشاركة هذه البيانات، عليك مشاركتها بنفسك، على سبيل المثال، عن طريق إرسال window.postMessage من إطار iframe في B إلى إطار A.

لا تسمح مجموعات المواقع الإلكترونية ذات الصلة بالوصول الضمني إلى ملفات تعريف الارتباط غير المقسّمة بدون استدعاء أي واجهة برمجة تطبيقات. لا تتوفّر ملفات تعريف الارتباط على مستوى المواقع الإلكترونية تلقائيًا ضمن المجموعة، بل تسمح مجموعات المواقع الإلكترونية ذات الصلة للمواقع الإلكترونية ضمن المجموعة فقط بتخطّي طلب إذن واجهة برمجة التطبيقات Storage Access API. يجب أن يستدعي إطار iframe document.requestStorageAccess() إذا أراد الوصول إلى ملفات تعريف الارتباط الخاصة به، أو يمكن للصفحة ذات المستوى الأعلى استدعاء document.requestStorageAccessFor().

مشاركة الملاحظات

إنّ إرسال مجموعة على GitHub والعمل مع Storage Access API وrequestStorageAccessFor API هما فرصتان لمشاركة تجربتك في العملية وأي مشاكل تواجهها.

للانضمام إلى المناقشات حول ميزة "مجموعة المواقع الإلكترونية المرتبطة":