Uzantılar, normal bir web sitesine benzer şekilde çerezleri depolayabilir ve web depolama API'lerine erişebilir. Ancak bazı durumlarda bunlar uzantılarda farklı şekilde davranır.
Uzantı API'si hakkında bilgi için browser.storage başlıklı makaleyi inceleyin.
Depolama
Uzantılarda web platformu depolama API'lerinin kullanılması genellikle tercih edilir. Bu bölümde, bu API'lerin uzantı bağlamındaki davranışı ele alınmaktadır. Bu davranış, bazen web'deki davranışlarından farklı olabilir.
Kalıcılık
Kullanıcı göz atma verilerini temizlediğinde uzantı depolama alanı temizlenmez. Bu, web depolama API'leri (ör. Local Storage ve IndexedDB) kullanılarak depolanan tüm veriler için geçerlidir.
Uzantılar varsayılan olarak depolamayla ilgili normal kota kısıtlamalarına tabidir. Bu kısıtlamalar, navigator.storage.estimate() çağrılarak kontrol edilebilir. Depolama alanı, nadir olsa da yoğun bellek baskısı altında da çıkarılabilir. Bunu önlemek için:
- Hem uzantı hem de web depolama API'lerini etkileyen ve uzantıları hem kota kısıtlamalarından hem de tahliyeden muaf tutan
"unlimitedStorage"iznini isteyin. - Tahliye edilmeye karşı korunmak için
navigator.storage.persist()numaralı telefonu arayın.
Uzantı depolama alanı, uzantı hizmet çalışanı, tüm uzantı sayfaları (pop-up'lar ve yan panel dahil) ve ekran dışı dokümanlar dahil olmak üzere uzantının kaynağı genelinde paylaşılır. İçerik komut dosyalarında, web depolama API'lerini çağırmak, içerik komut dosyasının yerleştirildiği ana makine sayfasındaki verilere erişir ve uzantıdaki verilere erişmez.
Service worker'larda erişim
IndexedDB ve Cache Storage API'lerine servis çalışanlarında erişilebilir. Ancak Yerel Depolama ve Oturum Depolaması bu kapsamda değildir.
Hizmet çalışanından yerel depolamaya veya oturum depolamaya erişmeniz gerekiyorsa ekran dışı bir doküman kullanın.
Bölümlendirme
Bölümleme, depolanan verilere erişilebilecek yerleri sınırlamak için anahtarların kullanıldığı yerdir. Depolama alanı, geçmişte kaynak temelinde anahtarlanıyordu.
Chrome 115'ten itibaren depolama bölümlendirme, belirli türlerdeki siteler arası izlemeyi önlemek için bölümlendirme anahtarlarının tanımlanma şeklini değiştiriyor. Uygulamada bu, A sitesi B sitesini içeren bir iFrame yerleştirirse B sitesinin, doğrudan gidildiğinde sahip olacağı depolama alanına erişemeyeceği anlamına gelir.
Bu durumun uzantılar üzerindeki etkisini azaltmak için iki muafiyet geçerlidir:
chrome-extension://şemasına sahip bir sayfa herhangi bir siteye yerleştirilirse depolama bölümlendirme uygulanmaz ve uzantı, üst düzey bölümüne erişebilir.chrome-extension://şemasına sahip bir sayfada iframe varsa ve uzantının yerleştirildiği site için ana makine izinleri varsa bu site de üst düzey bölümüne erişebilir.
Çerezler
Çerezler, belirli bir alan adı ve yolla ilişkili anahtar/değer çiftlerini depolamanın bir yolunu sunar. Uzantılarda sınırlı değere sahiptirler ancak belirli bir kullanım alanınız varsa veya uygulamasında bunları kullanan bir üçüncü taraf komut dosyası paketlediyseniz davranışlarını anlamak faydalı olabilir.
Güvenli çerezler
Secure çerez özelliği yalnızca https:// şeması için desteklenir. Bu nedenle, chrome-extension:// sayfaları bu özellikle çerez ayarlayamaz.
Bu durum, uzantı sayfalarının Secure özelliğinin gerekli olduğu diğer çerez özelliklerini kullanamayacağı anlamına da gelir:
Bölümleme ve SameSite davranışı
chrome-extension:// sayfalarında ayarlanan çerezler her zaman SameSite=Lax kullanır.
Dolayısıyla, bir uzantının kendi kaynağında ayarladığı çerezlere hiçbir zaman çerçevelerde erişilemez ve bölümleme bu durumda geçerli değildir.
Üçüncü taraf siteleriyle ilişkili çerezler (ör. bir uzantı sayfasındaki çerçeveye yüklenen üçüncü taraf sitesi veya bir uzantı sayfasından üçüncü taraf kaynağına yapılan istek) için çerezler, web'deki gibi davranır ancak iki farklılık vardır:
- Belirli bir sekmenin üst düzey sayfası
chrome-extension://sayfasıysa üçüncü taraf çerezleri alt çerçevelerde bile hiçbir zaman engellenmez. - Bir uzantının üçüncü tarafa yaptığı istekler, uzantının üçüncü taraf için ana makine izinleri varsa aynı site isteği olarak değerlendirilir. Bu,
SameSite=Strictçerezlerin gönderilebileceği anlamına gelir. Bu durumun yalnızca ağ istekleri için geçerli olduğunu, JavaScript'tedocument.cookieüzerinden erişim için geçerli olmadığını ve üçüncü taraf çerezleri engellendiğinde geçerli olmadığını unutmayın.
Üçüncü taraf çerezleriyle ilgili ayarların Özel Korumalı Alan çalışmalarından etkilendiğini ve bu çalışmaların zaman çizelgesine göre ayarlandığını unutmayın.
browser.cookies API, her API yöntemiyle kullanılacak bölüm anahtarı üzerinde kontrol sağlar. Daha fazla bilgi için API referansı bölümüne bakın.