Chrome 115, üçüncü taraf bağlamlarında bölümlendirme yaparak depolama alanı, hizmet çalışanları ve iletişim API'lerinde değişiklikler yaptı. Etkilenen API'ler, aynı kaynak politikası tarafından izole edilmenin yanı sıra üçüncü taraf bağlamlarında kullanıldığında üst düzey bağlamın sitesi tarafından da izole edilir.
Üçüncü taraf depolama alanı bölümlendirmesi desteğini uygulamaya zaman bulamayan siteler, geçici olarak bölümlendirmeyi kaldırmak (aynı kaynak politikasına göre izolasyonu sürdürmek ancak üst düzey siteye göre izolasyonu kaldırmak) ve sitelerine yerleştirilmiş içeriklerde depolama, hizmet çalışanları ve iletişim API'lerinin önceki davranışını geri yüklemek için desteğinin sonlandırılması deneme sürümüne katılabilir. Bu desteği sonlandırma denemesinin süresi, 3 Eylül 2024'te Chrome 127'nin yayınlanmasıyla sona erecek. Bu özelliğin, üçüncü taraf çerezlerine erişim için sonlanan özellik denemesinden ayrı olduğunu unutmayın. Bu özellik yalnızca depolama alanına erişim içindir.
Üçüncü taraf çerez dışı depolama bölümlendirmesi nedeniyle kesintiye uğrayan belirli kullanım alanlarını ele almak için uzun vadeli bir çözüm olarak Chrome, üçüncü tarafların halihazırda çerez erişimi istemelerine olanak tanıyan Storage Access API (Chrome 117'den itibaren kullanıma sunuluyor) aracılığıyla depolama/iletişim erişimi (hem çerez hem de çerez dışı) istemelerini öneriyor.
Chrome 120'den itibaren bu teklif, bir kaynak denemesi aracılığıyla deneme amaçlı olarak kullanılabilir. Geliştiriciler, desteğin sonlandırılması denemesi sona ermeden önce hazırlıklı olmak için önerilen çözümün kullanım alanlarını nasıl ele aldığını değerlendirmek üzere bu kaynak denemesine katılmalıdır.
Kaynak deneme ayrıntıları
Chrome 120'den itibaren Chrome, üçüncü taraf bağlamında bölümlenmemiş depolama alanına (çerez ve çerez dışı) erişim izni vermek için Storage Access API'nin (geriye dönük uyumlu) önerilen uzantısını etkinleştirmek üzere StorageAccessAPIBeyondCookies adlı bir kaynak denemesini destekleyecektir.
Teknisyenler
API aşağıdaki şekilde kullanılabilir (JavaScript, yerleşik bir iFrame'de çalışır):
// Request a new storage handle via rSA (this should prompt the user)
const handle = await document.requestStorageAccess({all: true});
// Write some 1P context sessionStorage
handle.sessionStorage.setItem('userid', '1234');
// Write some 1P context localStorage
handle.localStorage.setItem('preference', 'A');
// Open or create an indexedDB that is shared with the 1P context
const messageDB = handle.indexedDB.open('messages');
// Use locks shared with the 1P context
await handle.locks.request('example', ...);
all
yerine yalnızca belirli API'lere erişim istiyorsanız yalnızca ihtiyacınız olan API herkese açık kimliklerinin adlarını iletebilirsiniz. Örneğin, yalnızca Oturum Depolama'ya erişmek için {sessionStorage: true}
veya IndexedDB ve Web Kilitleri'ne erişmek için {indexedDB: true, locks:true}
iletebilirsiniz.
Bu ek uzantıyı çağırmanın yanı sıra, çerez dışı depolama alanına erişim, Storage Access API aracılığıyla çerez erişimi için geçerli şartlarla eşleşir. Örneğin, Chrome'da kökler aynı İlgili Web Sitesi Grubu'nda (RWS, Birinci Taraf Gruplar'ın yeni adı) olduğunda istem gösterilmez. Aynı RWS'nin parçası olmayan kaynaklar, Chrome'daki Storage Access API'nin istem şartlarına tabidir.
Süre
Kaynak denemesi, Chrome 120'den Chrome 125'e kadar (veya 6 Ağustos 2024'ten sonra herhangi bir aşamada) kullanılabilir.
Kapsam
Chrome 120'de yalnızca DOM Depolama (oturum ve yerel depolama), Dizine Eklenmiş Veritabanı ve Web Kilitleri kullanılabilir.
Chrome 121'de önbellek depolama alanı, kaynak özel dosya sistemi, kota, blob depolama alanı ve yayın kanalı eklendi.
Chrome 123'e ortak çalışanlar ve çerezlerin dahil edilmesi üzerinde kontrol eklendi.
Chrome 120'den itibaren requestStorageAccess
, işleyici oluşturulmadan önce çağrılırsa özel işleyiciler, bölümlenmemiş çerezlere erişimi devralır (bu işlem için Storage Access API kimliğinin kullanılması gerekmez).
Katıl
- Üçüncü taraf bağlamında çerez ve çerez olmayan depolama alanını nasıl kullandığınızı değerlendirin. Örnek kullanım alanları, bu teklifin ihtiyaçlarınıza uygun olup olmadığını anlamanıza yardımcı olabilir.
- Chrome 120 (veya sonraki bir sürüm) sürümünü başlatın ve test-third-party-cookie-phaseout işaretinin etkinleştirildiğinden emin olun.
- Özelliği, önce bir kaynak deneme jetonu oluşturmadan yerel olarak test etmek istiyorsanız tarayıcınızda #enable-experimental-web-platform-features seçeneğini etkinleştirebilirsiniz.
- Yerel olarak test yapmayı tamamladıktan sonra StorageAccessAPIBeyondCookies kaynak denemesine kaydolabilir ve alanlarınız için bir jeton alabilirsiniz. Daha ayrıntılı talimatlar için Kaynak denemelerini kullanmaya başlama başlıklı makaleyi inceleyin. Chrome kaynak denemeleriyle ilgili sorunları giderme kılavuzunda, jetonunuzun doğru şekilde yapılandırıldığından emin olmak için eksiksiz bir yapılacaklar listesi sağlanır.
- Bu kaynak deneme jetonunu, HTTP üst bilgisi, HTML meta etiketi veya programlı olarak kullanarak Storage Access API kimliğini kullanmanız gereken iFrame'e yerleştirin. Jetonun, bu API'yi kullanmak isteyen herhangi bir çerçeve tarafından yerleştirilmesi gerektiğini unutmayın. Jetonun üst çerçeveye yerleştirilmesi, API'nin alt çerçevelerde etkinleştirilmesini sağlamaz.
- Siteler arası iFrame'de Storage Access API kimliğini almak için
document.requestStorageAccess(...)
işlevini çağırın. Bu çağrının başarılı olması için gerekenler Storage Access API dokümanlarına bakın. - Mevcutsa Storage Access API kimliğini kullanmak için iframe'inizdeki depolama alanını taşıyın. Örneğin,
window.sessionStorage.setItem(...)
çağrılarıhandle.sessionStorage.setItem(...)
olur. - Web sitenizi açın ve depolama alanı erişim kimliğinin beklendiği gibi çalıştığını doğrulayın.
- Kaynak denemesine katılımınızı sonlandırmak için 3. adımda eklediğiniz jetonu kaldırın.
- Karşılaştığınız sorunları Storage Access API Non-Cookie Storage GitHub deposuna gönderin veya geri bildirimde bulunun.
Demo: Bölmesiz yerel depolamaya erişmek için Storage Access API'yi kullanma
Aşağıdaki demoda, Depolama Aksesuarı API'si kullanılarak üçüncü taraf bir iFrame'den bölümlenmemiş Yayın Kanallarına nasıl erişileceği gösterilmektedir:
https://saa-beyond-cookies.glitch.me/
Demo için test-third-party-cookie-phaseout işaretinin etkin olduğu Chrome 121 veya daha yeni bir sürüm gerekir.