Kökler arası erişime kapalı web siteleri, SharedArrayBuffer gibi güçlü özelliklerin web sayfalarında kullanılmasını sağlar. Bu makalede, web sitenizde kaynaklar arası izolasyonu nasıl etkinleştireceğiniz açıklanmaktadır.
Bu kılavuzda, kökler arası erişime kapalı web sitelerini nasıl etkinleştireceğiniz gösterilmektedir. SharedArrayBuffer,
performance.measureUserAgentSpecificMemory(),
veya daha iyi hassasiyete sahip yüksek çözünürlüklü zamanlayıcı kullanmak istiyorsanız kaynaklar arası izolasyon gereklidir.
Çapraz kaynak yalıtımını etkinleştirmeyi planlıyorsanız bunun, web sitenizdeki reklam yerleşimleri gibi diğer çapraz kaynak kaynakları üzerindeki etkisini değerlendirin.
SharedArrayBuffer nesnesinin web sitenizde nerede kullanıldığını belirleme
Chrome 92'den itibaren SharedArrayBuffer kullanan işlevler, çapraz kaynak izolasyonu olmadan çalışmayacaktır. Bu sayfaya SharedArrayBuffer desteğinin sonlandırılması mesajı nedeniyle geldiyseniz büyük olasılıkla web siteniz veya web sitenize yerleştirilmiş kaynaklardan biri SharedArrayBuffer kullanıyordur.
Kullanımdan kaldırılma nedeniyle web sitenizde hiçbir şeyin bozulmaması için öncelikle bu özelliğin nerede kullanıldığını belirleyin.
Sitenizin hangi bölümünde SharedArrayBuffer kullanıldığından emin değilseniz bunu öğrenmenin iki yolu vardır:
- Chrome Geliştirici Araçları'nı kullanma
- (Gelişmiş) Kullanımdan Kaldırma Raporlama'yı kullanma
SharedArrayBuffer kullandığınız yerleri zaten biliyorsanız Kaynaklar arası izolasyonun etkisini analiz etme bölümüne geçin.
Chrome Geliştirici Araçları'nı kullanma
Chrome Geliştirici Araçları, geliştiricilerin web sitelerini incelemesine olanak tanır.
SharedArrayBufferkullandığından şüphelendiğiniz sayfada Chrome Geliştirici Araçları'nı açın.- Konsol panelini seçin.
- Sayfada
SharedArrayBufferkullanılıyorsa aşağıdaki mesaj gösterilir:[Deprecation] SharedArrayBuffer will require cross-origin isolation as of M92, around May 2021. See for more details. common-bundle.js:535
- İletinin sonundaki dosya adı ve satır numarası (örneğin,
common-bundle.js:535),SharedArrayBufferöğesinin nereden geldiğini gösterir. Üçüncü taraf kitaplığıysa sorunu düzeltmek için geliştiriciyle iletişime geçin. Web sitenizin bir parçası olarak uygulanıyorsa kaynaklar arası izolasyonu etkinleştirmek için aşağıdaki kılavuzu inceleyin.
(Gelişmiş) Kullanımdan Kaldırma Raporlama'yı kullanma
Bazı tarayıcılarda, belirtilen bir uç noktaya API'lerin kullanımdan kaldırılmasıyla ilgili raporlama işlevi bulunur.
- Kullanımdan kaldırma raporu sunucusu oluşturma ve raporlama URL'sini alma. Bu işlemi, herkese açık bir hizmeti kullanarak veya kendiniz bir hizmet oluşturarak yapabilirsiniz.
- URL'yi kullanarak aşağıdaki HTTP üstbilgisini,
SharedArrayBufferyayınlıyor olabilecek sayfalara ayarlayın.Report-To: {"group":"default","max_age":86400,"endpoints":[{"url":"THE_DEPRECATION_ENDPOINT_URL"}]} - Üstbilgi yayılmaya başladıktan sonra, kayıt olduğunuz uç nokta, desteği sonlandırılan özellik raporlarını toplamaya başlamalıdır.
Örnek bir uygulamaya göz atın.
Kökler arası erişimin kapatılmasının etkisini analiz etme
Kaynaklar arası izolasyonu etkinleştirmenin siteniz üzerindeki etkisini hiçbir şeyi bozmadan değerlendirebilmek harika olmaz mıydı? Cross-Origin-Opener-Policy-Report-Only ve
Cross-Origin-Embedder-Policy-Report-Only
HTTP başlıkları tam da bunu yapmanıza olanak tanır.
- En üst düzey belgenizde
Cross-Origin-Opener-Policy-Report-Only: same-originayarlayın. Adından da anlaşılacağı gibi bu başlık yalnızcaCOOP: same-originolması durumunda siteniz üzerindeki etkisiyle ilgili raporlar gönderir. Pop-up pencerelerle iletişimi devre dışı bırakmaz. - Raporlamayı ayarlayın ve raporları alıp kaydetmek için bir web sunucusu yapılandırın.
- En üst düzey belgenizde
Cross-Origin-Embedder-Policy-Report-Only: require-corpayarlayın. Bu üstbilgi,COEP: require-corpözelliğini etkinleştirmenin etkisini sitenizin işleyişini henüz etkilemeden görmenizi sağlar. Bu üstbilgiyi, raporları önceki adımda ayarladığınız raporlama sunucusuna gönderecek şekilde yapılandırabilirsiniz.
Kökler arası erişime kapalı web sitelerinin etkisini azaltma
Hangi kaynakların kaynaklar arası izolasyondan etkileneceğini belirledikten sonra, bu kaynaklar arası kaynakları nasıl etkinleştireceğinize dair genel yönergeleri aşağıda bulabilirsiniz:
- Resimler, komut dosyaları, stil sayfaları, iFrame'ler ve diğerleri gibi kaynaklar arası kaynaklarda
Cross-Origin-Resource-Policy:cross-originbaşlığını ayarlayın. Aynı site kaynaklarındaCross-Origin-Resource-Policy:same-siteüst bilgisini ayarlayın. - CORS kullanılarak yüklenebilen kaynaklar için HTML etiketinde
crossoriginözelliğini ayarlayarak (örneğin,<img src="example.jpg" crossorigin>) CORS'un etkinleştirildiğinden emin olun. JavaScript getirme isteği içinrequest.modeözelliğinincorsolarak ayarlandığından emin olun. - Yüklü bir iframe'de
SharedArrayBuffergibi güçlü özellikleri kullanmak istiyorsanızallow="cross-origin-isolated"öğesini<iframe>öğesine ekleyin. - Kaynaklar arası iframe'lere veya çalışan komut dosyalarına yüklenen kaynaklar başka bir iframe veya çalışan komut dosyası katmanı içeriyorsa devam etmeden önce bu bölümde açıklanan adımları yinelemeli olarak uygulayın.
- Tüm kaynaklar arası kaynakların etkinleştirildiğini onayladıktan sonra iframe'lerde ve worker komut dosyalarında
Cross-Origin-Embedder-Policy: require-corpüstbilgisini ayarlayın (Bu, aynı kaynak veya kaynaklar arası olmasına bakılmaksızın gereklidir). postMessage()üzerinden iletişim gerektiren çapraz kaynak pop-up pencerelerin olmadığından emin olun. Kaynaklar arası izolasyon etkinleştirildiğinde bunların çalışmaya devam etmesini sağlamanın bir yolu yoktur. İletişimi, kökler arası erişime kapalı olmayan başka bir dokümana taşıyabilir veya farklı bir iletişim yöntemi (ör. HTTP istekleri) kullanabilirsiniz.
Kaynaklar arası yalıtımı etkinleştirme
Çapraz kaynak izolasyonu ile etkiyi azaltmanızın ardından, çapraz kaynak izolasyonunu etkinleştirmek için genel yönergeler aşağıda verilmiştir:
- En üst düzey belgenizde
Cross-Origin-Opener-Policy: same-originbaşlığını ayarlayın.Cross-Origin-Opener-Policy-Report-Only: same-originayarladıysanız bu ayarı değiştirin. Bu, üst düzey dokümanınız ile pop-up pencereleri arasındaki iletişimi engeller. - En üst düzey belgenizde
Cross-Origin-Embedder-Policy: require-corpbaşlığını ayarlayın.Cross-Origin-Embedder-Policy-Report-Only: require-corpayarladıysanız bu ayarı değiştirin. Bu işlem, etkinleştirilmemiş çapraz kaynak kaynaklarının yüklenmesini engeller. - Sayfanızın kökler arası erişime kapalı olduğunu doğrulamak için konsolda
self.crossOriginIsolateddeğerinintruedöndürdüğünü kontrol edin.