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