منابع قابل دسترسی به وب، فایلهایی هستند که درون یک برنامه افزودنی قرار دارند و توسط صفحات وب یا سایر برنامههای افزودنی قابل دسترسی هستند. برنامههای افزودنی معمولاً از این ویژگی برای نمایش تصاویر یا سایر داراییهایی که باید در صفحات وب بارگیری شوند، استفاده میکنند، اما هر دارایی موجود در بسته برنامه افزودنی را میتوان در دسترس وب قرار داد.
به طور پیشفرض هیچ منبعی در وب قابل دسترسی نیست، زیرا این امر به یک وبسایت مخرب اجازه میدهد تا افزونههایی را که کاربر نصب کرده است، اثر انگشت کند یا از آسیبپذیریها (مثلاً باگهای XSS ) در برنامههای افزودنی نصب شده استفاده کند. فقط صفحات یا اسکریپت های بارگیری شده از مبدا یک برنامه افزودنی می توانند به منابع آن افزونه دسترسی داشته باشند.
اعلامیه آشکار
از ویژگی مانیفست web_accessible_resources
استفاده کنید تا مشخص کنید کدام منابع در معرض قرار دارند و از چه منشأهایی استفاده می کنند. این ویژگی آرایه ای از اشیاء است که قوانین دسترسی به منابع را اعلام می کند. هر شی تعدادی از منابع برنامه افزودنی را فهرست می کند و باید مقداری برای حداقل یکی از کلیدهای matches
یا extension_ids
ارائه کند تا مبداهایی را که می توانند به این منابع دسترسی داشته باشند، نشان دهد.
{
...
"web_accessible_resources": [
{
"resources": [ "test1.png", "test2.png" ],
"matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
}, {
"resources": [ "test3.png", "test4.png" ],
"matches": [ "https://web-accessible-resources-2.glitch.me/*" ]
}
],
...
}
هر شی در آرایه حاوی این عناصر است:
-
"resources"
- آرایه ای از رشته ها که هر کدام شامل یک مسیر نسبی به یک منبع معین از دایرکتوری ریشه برنامه افزودنی است. منابع ممکن است دارای ستاره (
*
) برای مطابقت با حروف عام باشند. به عنوان مثال،"/images/*"
همه چیز را در فهرستimages/
برنامه افزودنی به صورت بازگشتی نشان می دهد، در حالی که"*.png"
همه فایل های PNG را نمایش می دهد. -
"matches"
- آرایهای از رشتهها که هر کدام حاوی یک الگوی تطبیق است که مشخص میکند کدام سایتها میتوانند به این مجموعه منابع دسترسی داشته باشند. فقط مبدا برای مطابقت با URL ها استفاده می شود. ریشه ها شامل تطبیق زیر دامنه است. اگر الگو مسیری غیر از '/*' داشته باشد، Google Chrome خطای "Invalid match pattern" صادر می کند.
-
"extension_ids"
- آرایه ای از رشته ها که هر کدام حاوی شناسه یک افزونه است که می تواند به منابع دسترسی داشته باشد.
هر عنصر باید شامل یک عنصر "resources"
و یک عنصر "matches"
یا "extension_ids"
باشد. این یک نقشهبرداری را ایجاد میکند که منابع مشخصشده را در معرض صفحات وب مطابق با الگو یا افزونههایی با شناسههای منطبق قرار میدهد.
قابلیت کشتیرانی منابع
منابع در یک صفحه وب با استفاده از URL chrome-extension://[PACKAGE ID]/[PATH]
در دسترس هستند که میتواند با روش runtime.getURL()
ایجاد شود. منابع با هدرهای CORS مناسب ارائه می شوند، بنابراین با استفاده از fetch()
در دسترس هستند.
پیمایش از مبدأ وب به منبع افزونه مسدود میشود مگر اینکه منبع بهعنوان وب در دسترس فهرست شده باشد. به این موارد گوشه ای توجه کنید:
- هنگامی که یک برنامه افزودنی از webRequest API برای هدایت یک درخواست منبع عمومی به منبعی استفاده می کند که در وب نیست، چنین درخواستی نیز مسدود می شود.
- تغییر مسیرها از منابع عمومی مسدود می شوند حتی اگر منبعی که در وب قابل دسترسی نیست متعلق به پسوند تغییر مسیر باشد.
- پیمایش در حالت ناشناس مسدود می شود مگر اینکه مقدار فیلد
"incognito"
روی"split"
تنظیم شود.
خود اسکریپت های محتوا نیازی به اجازه ندارند.
مثال
مثال Web Accessible Resources استفاده از این عنصر را در یک پسوند کار نشان می دهد.