عناصر تحكُّم المستخدم في أذونات المضيف: دليل النقل

ملخّص

ما الذي سيتغيّر؟

بدءًا من Chrome 70، يمكن للمستخدمين حظر وصول مضيف الإضافة إلى قائمة مخصَّصة من المواقع، أو لإعداد الإضافات بحيث تتطلب النقرة للوصول إلى الصفحة الحالية.

ما هي واجهات برمجة التطبيقات المتأثرة؟

يؤثر هذا التغيير في أي واجهات برمجة تطبيقات متأثرة بأذونات المضيف المحددة في الإضافات. بالإضافة إلى النصوص البرمجية للمحتوى. تتضمن واجهات برمجة التطبيقات التي تتطلب أذونات المضيف webRequest، ملفات تعريف الارتباط وtabs.executeScript() وtabs.insertCSS() وتنفيذ إجراءات من مصدر خارجي الطلبات، مثلاً من خلال XMLHTTPRequest أو واجهة برمجة تطبيقات fetch().

تقييد الوصول

كيف يمكن للمستخدم تقييد الوصول؟

يمكن للمستخدمين اختيار السماح بعرض إضافتك عند النقر أو على مجموعة محدّدة من المواقع الإلكترونية أو على جميع المواقع الإلكترونية المواقع المطلوبة. يتم عرض هذه الخيارات للمستخدمين على صفحة chrome://extensions بالإضافة إلى في قائمة سياق الإضافة.

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

ماذا يحدث إذا اختار أحد المستخدمين تشغيل إضافتي "عند النقر"؟

تعمل الإضافة بشكل أساسي كما لو أنّها تستخدم إذن activeTab. الإضافة هي تم منح حق الوصول المؤقت إلى أي مضيف ينقر عليه المستخدم على الإضافة، إذا تم طلب هذا المضيف من خلال الإضافة (وليس موقعًا إلكترونيًا محظورًا، مثل chrome://settings). عند تعيينها للعرض عند النقر، يضيف Chrome إلى الإضافة دائرة وتظليلًا (انظر أدناه) للإشارة إلى أنّ يطلب الوصول إليها على موقع معين.

لقطة شاشة للشارات التي يضيفها Chrome إلى رمز الإضافة في شريط الأدوات

ماذا يحدث إذا اختار أحد المستخدمين تشغيل إضافتي على مواقع إلكترونية معيّنة؟

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

ماذا يحدث إذا اختار أحد المستخدمين تشغيل إضافتي على جميع المواقع الإلكترونية؟

وبإمكان الإضافة الوصول تلقائيًا إلى أي مواقع إلكترونية مطلوبة في البيان.

سلوكيات واجهة برمجة التطبيقات

واجهة برمجة تطبيقات طلب الويب

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

النصوص البرمجية للمحتوى وtab.executeScript() وtab.insertCSS()

لا يزال بإمكان الإضافة إدخال نصوص برمجية وأوراق أنماط تلقائيًا لأي مواقع إلكترونية لديها إذن بالوصول إليها. إليه. بالنسبة إلى المواقع الإلكترونية التي لا يمكن للإضافة الوصول إليها، سيضيف Chrome شارة إلى الإضافة للإشارة إلى أنّها تطلب الإضافة الدخول إلى الصفحة. يمكن للمستخدم بعد ذلك منح إذن الوصول إلى الإضافة. إذا كانت النص البرمجي للمحتوى الذي تم ضبطه على الإدخال في document_idle، فسيتم إدخال النص البرمجي على الفور. وإلا، يطلب Chrome من المستخدم إعادة تحميل الصفحة للسماح للإضافة بإدخال النصوص البرمجية في وقت سابق. تحميل الصفحة (في document_start أو document_end). استدعاءات استدعاءات tabs.executeScript() لا يتم استدعاء طرق tabs.insertCSS() إلا إذا منح المستخدم إذن الوصول إلى الموقع الإلكتروني.

ملفات تعريف الارتباط وصفحة الخلفية XHR

سيظل بإمكان الإضافة قراءة أي ملفات تعريف ارتباط وتعديلها وتنفيذ طلب XHR من مصادر متعددة على المواقع الإلكترونية التابعة لها. حق الوصول إليها. لأنّه ليست هناك علامة تبويب مرتبطة بصفحة إضافة يمكنها الوصول إلى صفحة المصدر الأخرى إرسال ملفات تعريف الارتباط أو XHR إلى مضيف آخر، لا يضع Chrome شارة للإضافة للإشارة إلى المستخدم تطلب الإضافة الوصول إلى الموقع. محاولة الوصول إلى ملف تعريف ارتباط لموقع آخر أو إنشاء سيفشل XHR المشترك المصدر مع ظهور خطأ كما لو أن بيان الإضافة لم يتضمن المضيف إذن. بالنسبة إلى هذه الحالات، ننصحك باستخدام أذونات اختيارية للسماح للمستخدم لمنح إمكانية الوصول إلى بيئة التشغيل لمواقع مختلفة.

يوضح المثال أدناه طريقة تطبيق هذه الطريقة في واجهة برمجة تطبيقات ملفات تعريف الارتباط.

قبل:

{
  ...
  "permissions": ["cookies", "https://example.com"]
}
chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
                    function(cookie) {
                      // Use the cookie.
                    });

بعد:

{
  ...
  "permissions": ["cookies"],
  "optional_permissions": ["https://example.com"]
}
// Note: permissions.request() requires a user gesture, so this
// may only be done in response to a user action.
chrome.permissions.request(
    {origins: ['https://example.com']},
    function(granted) {
      if (granted) {
        chrome.cookies.get({url: 'https://example.com', name: 'mycookie'},
                            function(cookie) {
                              // Use the cookie.
                            });
      } else {
        // Handle grant failure
      }
    });

النقل

ما هي أفضل الممارسات لتجنُّب التأثر سلبًا؟

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

ماذا يحدث لمستخدمي موقعي الحاليين الإعدادات؟

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

كيف يمكنني معرفة ما إذا كانت الإضافة لديها إذن بالتشغيل على موقع إلكتروني؟

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