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

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

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

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

في المثال التالي، يسرد 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 لطلب الوصول إلى ملفات تعريف الارتباط هذه. وقد يتعامل المتصفّح مع الطلب بشكل مختلف وذلك استنادًا إلى المجموعة الفرعية التي يشكّل كل موقع إلكتروني جزءًا منها.

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

تعتبر ميزة Related Website Sets مطابقة جيدة للحالات التي تحتاج فيها المؤسسة إلى شكل من أشكال الهوية المشتركة عبر مختلف المواقع الإلكترونية ذات المستوى الأعلى.

في ما يلي بعض حالات استخدام ميزة Related Website Sets:

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

Storage Access API

التوافق مع المتصفح

  • 119
  • 85
  • 65
  • 11.1

المصدر

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

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

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

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

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

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

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

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

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

requestStorageAccessFor في Chrome

التوافق مع المتصفح

  • 119
  • 119
  • x
  • x

المصدر

لا تسمح واجهة برمجة التطبيقات 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 وrSAFor لكل إطار. يتم التعامل مع منح rSA وrSAFor كأذونات منفصلة.

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

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

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

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

الأمان

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

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

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

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

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

لمعرفة ما إذا كانت لديك مساحة تخزين حاليًا، يمكنك استخدام document.hasStorageAccess().

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

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. حدد النطاقات ذات الصلة، بما في ذلك تعيين الأساسي وتعيين الأعضاء، الذي سيكون جزءًا من مجموعة المواقع الالكترونية المرتبطة. حدِّد أيضًا نوع المجموعة الفرعية الذي ينتمي إليه كل عضو في المجموعة.
  2. تأكَّد من تطبيق متطلبات الإعداد ومتطلبات التحقّق من الصحة.
  3. يُرجى تعريف مجموعة المواقع الإلكترونية المرتبطة بتنسيق JSON الصحيح.
  4. أرسِل مجموعة المواقع الإلكترونية المرتبطة من خلال إنشاء طلب سحب (PR) إلى related_website_sets.JSON حيث سيستضيف Chrome قائمة "مجموعة المواقع الإلكترونية المرتبطة" الأساسية. (يجب توفّر حساب على GitHub لإنشاء تقارير الأداء العامة، وعليك توقيع اتفاقية ترخيص المساهمين (CLA) للمساهمة في القائمة.)

بمجرد إنشاء "PR"، سيتم إجراء سلسلة من عمليات التحقّق للتحقّق من استيفاء المتطلبات من الخطوة 2.

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

وفي حال تعذّر إجراء أي من عمليات الفحص، سيتم إعلام مقدّم الشكوى بشأن عدم استيفاء متطلبات العلاقات العامة على GitHub. يمكن لمقدّم الشكوى إصلاح الأخطاء وتعديل الإصدار PR، مع الأخذ في الاعتبار ما يلي:

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

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

لتلبية احتياجات مستخدمي الإصدار الخاص بالمؤسسات، يستخدم Chrome اثنين من سياسات المؤسسات:

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

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

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

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

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

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

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

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

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