البرمجة

فهم Content Security Policy في تطوير تمديدات Chrome

في عملية تطوير توسيع (Extension) لمتصفح Chrome، يمكن أن تظهر رسالة خطأ تشير إلى “Refused to load the script”، تلك الرسالة تشير إلى عدم تحميل السكربت الخاص بك بسبب انتهاكه لسياسة الأمان (Content Security Policy). هذا الخطأ يحدث عندما يتعارض السكربت مع التوجيهات الخاصة بسياسة الأمان المحددة لتوسيعك.

في حالتك، السبب الرئيسي وراء عدم تحميل jQuery هو انتهاكها لتوجيه “script-src ‘self’ blob: filesystem: chrome-extension-resource:”. هذا يعني أن مصدر السكربت يجب أن يكون محددًا ضمن السياسة المحددة.

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

html
<script src="path/to/your/local/jquery.min.js">script>

بعد ذلك، يجب تحديث توجيهات Content Security Policy في ملف manifest.json للتمديد الخاص بك لتتيح تحميل السكربت المحلي. يمكنك فعل ذلك عن طريق إضافة ‘unsafe-inline’ إلى التوجيه الخاص بـ script-src.

json
{ "content_security_policy": { "extension_pages": "script-src 'self' 'unsafe-inline'; object-src 'self'" }, "manifest_version": 2, // ... الإعدادات الأخرى }

تأكد من أن تقوم بتحديث المسار الذي يشير إلى jQuery بما يتوافق مع هيكل الملفات الخاص بتمديدك. هذا يجب أن يسمح للتمديد بتحميل jQuery بدون مشاكل.

المزيد من المعلومات

عند مواجهتك لخطأ يشير إلى “Refused to load the script” بسبب انتهاك Content Security Policy directive في تطوير تمديد Chrome، يجب عليك فهم المزيد حول سياسة الأمان هذه وكيفية تجنب المشاكل المحتملة.

Content Security Policy (CSP) هي آلية توجيه تقوم بتحديد أين يُسمح بتنفيذ السكربتات والموارد الأخرى في صفحة الويب. يهدف CSP إلى تقليل مخاطر هجمات Cross-Site Scripting (XSS) عن طريق منع تنفيذ السكربتات غير الموثوق بها.

في حالة تمديد Chrome، يكون ملف manifest.json هو المكان الرئيسي حيث تُعرف توجيهات CSP. يجب عليك أن تكون حذرًا عند تضمين السكربتات الخارجية، ويُفضل دائمًا تحميل المكتبات المستخدمة محليًا.

عند تحديد توجيه script-src, يمكن أن يكون ‘self’ يشير إلى المصادر الموجودة داخل نطاق التمديد، و ‘unsafe-inline’ يسمح بتنفيذ السكربتات المضمنة في الصفحة HTML. يجب استخدام هذه القيم بحذر لتجنب إشكاليات الأمان.

علاوة على ذلك، يجب عليك النظر في إمكانية استخدام Content Security Policy nonce لتعيين قيمة فريدة لكل طلب للموارد، مما يزيد من الأمان.

تذكر أن تقوم بإعادة تحميل التمديد بعد التغييرات في manifest.json لضمان تحديث السياسة الأمانية.

فهم جيد لسياسة الأمان وتوجيهات CSP سيساعدك في تجنب مشاكل مستقبلية وضمان أمان تمديدك على متصفح Chrome.

زر الذهاب إلى الأعلى