Aynı site ortamları arasında WebAssembly modülü paylaşımı yalnızca aynı kaynakla sınırlandırılacaktır.
Bir WebAssembly (Wasm) modülünün aynı site ancak kaynaklar arası ortamlar arasında paylaşılması aracı kümelerine izin vermek için desteği sonlandırıldı kaynak kapsamına alınır. Wasm modüllerini bu tür alanlarda kullanan devam etmek için bu modülleri aynı kaynakta örneklendirmenin kullanmaya devam edeceğiz.
Wasm modülleri nedir ve nasıl çalışır?
WebAssembly programları, modüller halinde düzenlenir. Bu modüller, dağıtım, yükleme ve derleme.
Aşağıdaki örnek kodda,
https://iframe.site.example
, https://main.site.example
ile şunun üzerinden paylaşıldı:
postMessage()
. Bu alan adlarının aynı site, ancak çapraz kaynak olduğuna dikkat edin.
https://iframe.site.example
üzerindeki Wasm modülü:
(async () => {
const instance = await WebAssembly.instantiateStreaming(fetch('./add.wasm'), {});
iframe.contentWindow.postMessage(instance.module, `https://main.site.example`);
})();
Chrome 95'ten itibaren, gönderen ve alıcı aynı kaynak olmalıdır. İçinde
yukarıdaki örnekte, https://iframe.site.example
şöyle olmalıdır:
https://main.site.example
veya tam tersi.
Bu neden gerekli?
Chrome, kendi web sitenizdeki farklı dokümanları, sekmeleri ve çerçeveleri dahili olarak site içeren veya sitelerle ilişkili aracı kümeleri. Bu, aynı siteye ait dokümanların aynı işlemi tekrarlamanız gerekir (bunun işleyiş şekli her tarayıcıya göre değişir). Yakın zamanda, Chrome kaynaklar ise daha ayrıntılı birimler hâlinde ele alındı. Biz buna kaynak içeren veya kaynaklarla ilişkili aracı kümeleri. Ancak bunu yapmak kaynak pahalı olduğundan Kaynak içeren veya kaynaklarla ilişkili aracı kümeleri, yalnızca sınırlı web sitelerine sezgisel olarak uygulandı.
Planda, tüm aracı kümeleri varsayılan olarak kaynak içeren veya kaynaklarla ilişkilidir. Bu amaçla bunun için siteyle ilişkili veya siteyle ilişkili bilgileri gerektiren özellikleri kısıtlamamız gerekir. kaynak kümeleri:
- (Yalnızca Chrome) Artık
SharedArrayBuffer
veyaWebAssembly.Memory
nesneleri. Bu özellik Chrome 92 sürümünden beri mevcuttur. - Artık gönderemezsiniz
WebAssembly.Module
aynı sitenin diğer çapraz kaynak sayfalarına nesneleripostMessage()
aracılığıyla gönderebilir. Bu değişiklik aşağıda daha ayrıntılı olarak açıklanmaktadır. - Artık şu ayarları yapamazsınız:
document.domain
. Bu, normalde aynı site çapraz kaynak sayfalarına izin veren eski bir özelliktir. eşzamanlı şekilde erişir ancak kaynak içeren veya kaynaklarla ilişkili aracı kümelerinde devre dışı bırakıldı.
Yukarıdaki değişikliklerin tümünü gerçekleştirdiğinizde Chrome, kaynak içeren veya kaynaklarla ilişkili aracıyı kullanacak kümeler için varsayılan olarak kullanılır.
Kaynak içeren veya kaynaklarla ilişkili aracı kümeleri hakkında daha fazla bilgi edinmek için Kaynak Aracısı Kümesi başlığıyla performans izolasyonu isteme başlıklı makaleyi inceleyin.
Sonraki adımlar ve kaynaklar
Chrome'un varsayılan olarak kaynak içeren veya kaynaklarla ilişkili aracı kümeleriyle çalışmasını sağlamak için
document.domain
salt okunur yap. Chrome ekibi, bu değişikliğe ayak uydurmayı amaçlıyor.
görüşmek dileğiyle.
- Kaynak içeren veya kaynaklarla ilişkili aracı kümeleri açıklayıcısı
- Varsayılan olarak yalıtım
document.domain
desteği sonlandırılıyor
Fotoğraf: Markus Winkler açık Lansmanı kaldır