برنامههای افزودنی میتوانند کوکیها را ذخیره کنند و مانند یک وبسایت معمولی به APIهای ذخیرهسازی وب دسترسی داشته باشند. با این حال، در برخی موارد اینها در پسوندها رفتار متفاوتی دارند.
برای اطلاعات در مورد برنامه افزودنی API به chrome.storage
مراجعه کنید.
ذخیره سازی
اغلب استفاده از APIهای ذخیره سازی پلتفرم وب در برنامه های افزودنی مطلوب است. این بخش به بررسی رفتار این APIها در زمینه افزونه میپردازد، که گاهی اوقات میتواند با نحوه رفتار آنها در وب متفاوت باشد.
ماندگاری
هنگامی که کاربر داده های مرور را پاک می کند، فضای ذخیره سازی برنامه افزودنی پاک نمی شود. این مورد برای هر داده ای که با استفاده از API های ذخیره سازی وب (مانند Local Storage و IndexedDB ) ذخیره می شود، اعمال می شود.
به طور پیشفرض، برنامههای افزودنی مشمول محدودیتهای سهمیه معمولی در فضای ذخیرهسازی هستند که میتوان با فراخوانی navigator.storage.estimate()
آن را بررسی کرد. ذخیره سازی همچنین می تواند تحت فشار شدید حافظه خارج شود، اگرچه این اتفاق نادر است. برای جلوگیری از این امر:
- اجازه
"unlimitedStorage"
را درخواست کنید، که بر APIهای برنامه افزودنی و ذخیرهسازی وب تأثیر میگذارد و افزونهها را هم از محدودیتهای سهمیه و هم از اخراج معاف میکند. - برای محافظت در برابر تخلیه
navigator.storage.persist()
را فراخوانی کنید.
فضای ذخیره سازی برنامه افزودنی در سراسر مبدا برنامه افزودنی از جمله کارگر سرویس برنامه افزودنی، هر صفحه افزونه (از جمله پنجره های بازشو و پانل کناری) و اسناد خارج از صفحه مشترک است. در اسکریپتهای محتوا، فراخوانی APIهای ذخیرهسازی وب به دادهها از صفحه میزبانی که اسکریپت محتوا روی آن تزریق میشود دسترسی پیدا میکند و نه برنامه افزودنی.
دسترسی در کارگران خدماتی
IndexedDB و Cache Storage API در سرویسکاران قابل دسترسی هستند. با این حال، Local Storage و Session Storage چنین نیستند.
اگر نیاز به دسترسی به Local Storage یا Session Storage از سرویسکار دارید، از یک سند خارج از صفحه استفاده کنید.
پارتیشن بندی
پارتیشن بندی جایی است که کلیدهایی برای داده های ذخیره شده معرفی می شوند تا جایی که می توان به آنها دسترسی داشت. ذخیره سازی از لحاظ تاریخی بر اساس مبدأ کلید خورده است.
از Chrome 115، پارتیشن بندی ذخیره سازی تغییراتی را در نحوه تعریف کلیدهای پارتیشن بندی برای جلوگیری از انواع خاصی از ردیابی بین سایتی ایجاد می کند. در عمل، این بدان معنی است که اگر سایت A یک iframe حاوی سایت B را تعبیه کند، سایت B نمی تواند به همان فضای ذخیره سازی که معمولاً هنگام پیمایش مستقیم به آن دارد دسترسی داشته باشد.
برای کاهش تأثیر این امر در برنامه های افزودنی، دو معافیت اعمال می شود:
- اگر صفحه ای با طرح
chrome-extension://
در هر سایتی تعبیه شده باشد، پارتیشن بندی فضای ذخیره سازی اعمال نمی شود و برنامه افزودنی به پارتیشن سطح بالای خود دسترسی خواهد داشت. - اگر صفحهای با طرح
chrome-extension://
شامل iframe باشد و برنامه افزودنی دارای مجوزهای میزبان برای سایتی باشد که در حال جاسازی است، آن سایت به پارتیشن سطح بالای خود نیز دسترسی خواهد داشت.
بیسکویت ها
کوکی ها راهی برای ذخیره جفت های کلید-مقدار مرتبط با یک دامنه و مسیر خاص ارائه می دهند. آنها ارزش محدودی در برنامههای افزودنی دارند، اما درک رفتار آنها میتواند مفید باشد اگر شما مورد استفاده خاصی دارید یا یک اسکریپت شخص ثالث را همراهی کردهاید که از آنها در اجرای خود استفاده میکند.
کوکی ها را ایمن کنید
ویژگی کوکی Secure
فقط برای طرح https://
پشتیبانی می شود. در نتیجه، صفحات chrome-extension://
قادر به تنظیم کوکیهایی با این ویژگی نیستند.
این همچنین به این معنی است که صفحات افزونه نمی توانند از سایر ویژگی های کوکی در مواردی که ویژگی Secure
مورد نیاز است استفاده کنند:
پارتیشن بندی و رفتار SameSite
کوکیهای تنظیمشده در صفحات chrome-extension:// همیشه از SameSite=Lax
استفاده میکنند. در نتیجه، کوکیهایی که توسط یک برنامه افزودنی در مبدأ خود تنظیم میشوند، هرگز در فریمها قابل دسترسی نیستند و پارتیشنبندی مرتبط نیست.
برای کوکیهای مرتبط با سایتهای شخص ثالث، مانند یک سایت شخص ثالث که در یک قاب در یک صفحه برنامه افزودنی بارگذاری شده است، یا درخواستی که از یک صفحه برنامه افزودنی به منبع شخص ثالث ارسال شده است، کوکیها مانند وب عمل میکنند، به جز در دو راه:
- کوکیهای شخص ثالث هرگز حتی در فریمهای فرعی مسدود نمیشوند، اگر صفحه سطح بالای یک برگه مشخص، صفحه
chrome-extension://
باشد. - در صورتی که برنامه افزودنی دارای مجوزهای میزبان برای شخص ثالث باشد، درخواست های یک برنامه افزودنی به شخص ثالث به عنوان همان سایت تلقی می شود. این بدان معناست که
SameSite=Strict
قابل ارسال هستند. توجه داشته باشید که این فقط برای درخواستهای شبکه اعمال میشود، نه دسترسی از طریقdocument.cookie
در جاوا اسکریپت، و در صورت مسدود شدن کوکیهای شخص ثالث اعمال نمیشود.
توجه داشته باشید که تنظیمات مربوط به کوکیهای شخص ثالث تحت تأثیر کار جعبه ایمنی حریم خصوصی است و بر اساس جدول زمانی آن تنظیم میشود.
chrome.cookies
API کنترل کلید پارتیشن را برای استفاده در هر روش API فراهم می کند. برای اطلاعات بیشتر، به مرجع API مراجعه کنید.