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

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

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

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

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

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

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

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

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

عند حظر ملفات تعريف الارتباط التابعة لجهات خارجية وتفعيل "مجموعات المواقع الإلكترونية المرتبطة"، منح Chrome الإذن تلقائيًا في السياقات ضمن "مجموعات المواقع الإلكترونية المرتبطة"، وسيعرض بدوره إشعارًا للمستخدم في حال عدم تفعيل هذه المجموعات. ("سياق ضمن إطار عمل 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() القيمة true، وسيتم إرسال ملفات تعريف الارتباط على مستوى المواقع الإلكترونية من مجموعة المواقع الإلكترونية ذات الصلة نفسها في هذه الطلبات بدون أي طلبات إضافية لـ 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 باستخدام مجموعة مواقع إلكترونية مرتبطة على الجهاز

لتشغيل 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 لإنشاء طلبات إعادة النظر، وعليك توقيع اتفاقية ترخيص المساهمة (CLA) قبل أن تتمكّن من المساهمة في القائمة).

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

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

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

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

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

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

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

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