Origin-Agent-Cluster
tarayıcıya, aynı sitedeki kaynaklar arası sayfalar arasında eşzamanlı komut dizisi erişimini engellemesi talimatını veren yeni bir HTTP yanıt başlığıdır. Tarayıcılar da kullanabilir Origin-Agent-Cluster
kaynağınızın, özel bir süreç gibi kendi, ayrı kaynaklarına sahip olması gerektiğine dair bir ipucu olarak.
Tarayıcı Uyumluluğu #
Şu anda Origin-Agent-Cluster
başlık yalnızca Chrome 88’den itibaren uygulanır. Olarak işaretleyen Mozilla Firefox temsilcileri ile yakın işbirliği içinde tasarlanmıştır. prototip oluşturmaya değerve sahip bir ön olumlu karşılama Safari tarafından kullanılan tarayıcı motoru WebKit’in temsilcilerinden.
Ancak bu arada, dağıtımın yapılmasında bir sorun yok. Origin-Agent-Cluster
bugün tüm kullanıcılarınıza başlık. Bunu anlamayan tarayıcılar onu görmezden gelir. Ayrıca, kaynak anahtarlı aracı kümelerindeki sayfalar gerçekten daha az şey site anahtarlı olanlardan (varsayılan), endişe edilecek bir birlikte çalışabilirlik sorunu yoktur.
Tarayıcılar neden aynı site kaynaklarını otomatik olarak ayıramıyor? #
Web, belgelerin ve komut dosyalarının başka bir kaynaktan gelen kaynaklarla nasıl etkileşime girebileceğini kısıtlayan bir güvenlik özelliği olan aynı kaynak ilkesi üzerine kurulmuştur. Örneğin, adresinde barındırılan bir sayfa birinden farklı bir orijindedir
https://b.example
veya bir .
Perde arkasında tarayıcılar, kökenlerin sağladığı ayrımı farklı şekillerde kullanır. Eski günlerde, ayrı kaynaklar birbirlerinin verilerine erişemese de işletim sistemi iş parçacıkları, işlemler ve bellek ayırma gibi kaynakları paylaşmaya devam ediyorlardı. Bu, bir sekme yavaşsa diğer tüm sekmeleri yavaşlatacağı anlamına geliyordu. Veya bir sekme çok fazla bellek kullanırsa, tüm tarayıcı çökebilir.
Bu günlerde tarayıcılar daha sofistike ve farklı kökenleri farklı süreçlere ayırmaya çalışıyor. Bunun tam olarak nasıl çalıştığı tarayıcıya göre değişir: çoğu tarayıcının sekmeler arasında bir düzeyde ayrımı vardır, ancak tek bir sekme içindeki farklı iframe’ler bir işlemi paylaşabilir. Ve işlemler bir miktar bellek ek yüküyle geldiğinden, çok fazla sayıda yumurtlamayı önlemek için buluşsal yöntemler kullanırlar: örneğin, Firefox’un kullanıcı tarafından yapılandırılabilen işlem sınırıve Chrome davranışını masaüstü (belleğin daha bol olduğu yerler) ve mobil (kıt olduğu yerler) arasında değiştirir.
Bu buluşsal yöntemler mükemmel değildir. Ve önemli bir sınırlamadan muzdariptirler: çünkü aynı kaynak politikasında aşağıdaki gibi alt alan adlarına izin veren istisnalar vardır: Ve
birbirleriyle konuşmak için, tarayıcılar alt alan adlarını otomatik olarak birbirinden ayıramaz.
Bu varsayılan davranışa “site anahtarlı aracı kümeleri” adı verilir: yani, tarayıcı sayfaları özelliklerine göre gruplandırır. alan. Yeni Origin-Agent-Cluster
başlık, tarayıcıdan belirli bir sayfa için bu varsayılan davranışı değiştirmesini ister. Menşei-anahtarlı aracı kümesi, böylece yalnızca tam olarak aynı kaynağa sahip diğer sayfalarla gruplandırılır. Özellikle, aynı siteler arası kaynaklar arası sayfalar aracı kümesinden hariç tutulacaktır.
Bu katılım ayrımı, tarayıcıların bu yeni kaynak anahtarlı aracı kümelerine, diğer kökenlerinkilerle birleştirilmemiş kendi ayrılmış kaynaklarını vermelerine olanak tanır. Örneğin, bu tür sayfalar kendi işlemlerini alabilir veya ayrı ileti dizilerinde planlanabilir. ekleyerek Origin-Agent-Cluster
başlığını sayfanıza eklerseniz, tarayıcıya sayfanın bu tür özel kaynaklardan yararlanacağını belirtmiş olursunuz.
Ancak ayırma işlemini gerçekleştirmek ve bu avantajları elde etmek için tarayıcının bazı eski özellikleri devre dışı bırakması gerekir.
Kaynak anahtarlı sayfaların yapamayacağı şeyler #
Sayfanız kaynak anahtarlı bir aracı kümesindeyken, daha önce mevcut olan aynı siteler arası kaynak sayfalarıyla konuşmak için bazı yeteneklerden vazgeçersiniz. Özellikle:
-
artık ayarlayamazsın
document.domain
. Bu, normalde aynı siteler arası kaynak sayfalarının birbirlerinin DOM’sine eşzamanlı olarak erişmesine izin veren eski bir özelliktir, ancak kaynak anahtarlı aracı kümelerinde devre dışıdır. -
artık gönderemezsin
WebAssembly.Module
aracılığıyla diğer aynı siteler arası kaynak sayfalarına nesnelerpostMessage()
. -
(Yalnızca Chrome) Artık gönderemezsiniz
SharedArrayBuffer
veyaWebAssembly.Memory
aynı sitedeki diğer çapraz kaynaklı sayfalara nesneler.
Kaynak anahtarlı aracı kümeleri ne zaman kullanılır? #
En çok fayda sağlayan kökenler Origin-Agent-Cluster
başlık olanlar şunlardır:
-
Mümkün olduğunda kendi özel kaynaklarıyla en iyi performansı gösterin. Örnekler arasında performans açısından yoğun oyunlar, video konferans siteleri veya multimedya oluşturma uygulamaları yer alır.
-
Kaynakları farklı, ancak aynı site olan yoğun kaynak kullanan iframe’ler içerir. Örneğin, eğer
yerleştirmeler
iframe’ler, kaynak anahtarlama
/
sohbet ekibi tarafından yazılan kodun, posta ekibi tarafından yazılan koda yanlışlıkla müdahale etmemesini sağlar ve tarayıcıya, bunları bağımsız olarak programlamak ve birbirleri üzerindeki performans etkilerini azaltmak için ayrı işlemler vermesi için ipucu verebilir. -
Farklı kaynaklı, aynı site sayfalarına yerleştirilmeyi bekleyin, ancak kendilerinin yoğun kaynak tükettiklerini bilin. Örneğin, eğer
görüntülü sohbet için çok sayıda kaynak kullanmayı bekliyor ve baştan sona çeşitli kaynaklara yerleştirilecek.
https://*.example.com
bu parçacığı sürdüren ekipOrigin-Agent-Cluster
gömücüler üzerindeki performans etkilerini azaltmaya çalışmak için başlık.
Ek olarak, yukarıda tartışılanları devre dışı bıraktığınızdan da emin olmanız gerekir. nadiren kullanılan kaynaklar arası iletişim özelliklerive sitenizin HTTPS kullandığını.
Ama sonuçta, bunlar sadece yönergelerdir. Kaynak anahtarlı aracı kümelerinin sitenize yardımcı olup olmayacağı, nihai olarak en iyi şekilde ölçümlerle belirlenir. Özellikle, kaynak anahtarlamanın ne gibi bir etkisi olduğunu görmek için Web Verilerinizi ve potansiyel olarak bellek kullanımınızı ölçmek isteyeceksiniz. (Oyundaki işlemlerin sayısını artırmak, işlem başına daha fazla bellek ek yüküne neden olabileceğinden, özellikle bellek kullanımı potansiyel bir endişe kaynağıdır.) Yalnızca kaynak anahtarını başlatıp en iyisini ummamalısınız.
Bunun kökenler arası izolasyonla nasıl bir ilişkisi var? #
Ajan kümelerinin başlangıç anahtarı Origin-Agent-Cluster
üst bilgi, çapraz kaynak izolasyonu ile ilgilidir, ancak ondan ayrıdır. Cross-Origin-Opener-Policy
Ve Cross-Origin-Embedder-Policy
başlıklar.
Kendisini kökenler arası izole eden herhangi bir site aynı zamanda aynı şeyi devre dışı bırakacaktır. aynı sitedeki kaynaklar arası iletişim özellikleri kullanırken olduğu gibi Origin-Agent-Cluster
başlık. Ancak Origin-Agent-Cluster
Header, tarayıcıya kaynak tahsis buluşsal yöntemini değiştirmesi için ek bir ipucu olarak, kaynaklar arası izolasyonun yanı sıra yine de yararlı olabilir. Bu nedenle, yine de uygulamayı düşünmelisiniz. Origin-Agent-Cluster
zaten kaynaklar arası izole edilmiş sayfalarda bile sonuçları ölçme.
nasıl kullanılır Origin-Agent-Cluster
başlık #
kullanmak için Origin-Agent-Cluster
başlık, web sunucunuzu aşağıdaki HTTP yanıt başlığını gönderecek şekilde yapılandırın:
Origin-Agent-Cluster: ?1
Değeri ?1
bu yapılandırılmış başlık bir boole için sözdizimi true
değer.
Bu başlığı şuraya göndermek önemlidir: Tümü sadece bazı sayfalardan değil, kaynağınızdan gelen yanıtlar. Aksi takdirde, tarayıcının bir kaynak anahtarlama isteği gördüğünü “hatırladığı” ve bu nedenle bunu istemeyen sayfalarda bile kaynak anahtarları yaptığı tutarsız sonuçlar alabilirsiniz. Veya tam tersi: Bir kullanıcının ziyaret ettiği ilk sayfanın başlığı yoksa, tarayıcı kaynağınızın kaynak anahtarlı olmak istemediğini hatırlar ve sonraki sayfalarda başlığı yok sayar.
Tarayıcı neden başlığa her zaman saygı duymuyor?
Bu “hafıza”nın nedeni, bir orijin için anahtarlamanın tutarlılığını sağlamaktır. Bir kaynaktaki bazı sayfalar kaynak anahtarlıyken diğerleri değilse, o zaman farklı aracı kümelerine yerleştirilmiş iki aynı kaynak sayfanız olabilir ve bu nedenle birbirleriyle konuşmalarına izin verilmez. Bu, hem web geliştiricileri hem de tarayıcının içindekiler için çok garip olurdu. Yani, şartname Origin-Agent-Cluster
bunun yerine, belirli bir kaynak için daha önce gördükleriyle tutarsızsa başlığı yok sayar. Chrome’da bu, bir konsol uyarısına neden olur.
Bu tutarlılık, tümü aşağıdakiler gibi mekanizmalar aracılığıyla birbirine ulaşabilen bir sekme, pencere veya iframe grubu olan bir göz atma bağlam grubuna göre belirlenir. window.opener
, frames[0]
veya window.parent
. Bu, bir kaynağın kaynak veya site anahtarlaması bir kez kararlaştırıldıktan sonra (tarayıcının başlığı görmesi veya görmemesi tarafından), değiştirmenin eskisine hiçbir şekilde bağlı olmayan tamamen yeni bir sekme açmayı gerektirdiği anlamına gelir.
Bu ayrıntılar test için önemli olabilir. Origin-Agent-Cluster
başlık. Sitenize ilk eklediğinizde, sadece sayfayı yeniden yüklemek işe yaramaz; sekmeyi kapatıp yeni bir tane açmanız gerekecek.
olup olmadığını kontrol etmek için Origin-Agent-Cluster
başlık uygulandı, JavaScript’i kullanın window.originAgentCluster
mülk. Bu olacak true
başlığın (veya diğer mekanizmaların olduğu durumlarda kökenler arası izolasyon) kaynak anahtarına neden oldu; false
olmadığında; Ve undefined
uygulamayan tarayıcılarda Origin-Agent-Cluster
başlık. Bu verileri analiz platformunuza kaydetmek, sunucunuzu doğru şekilde yapılandırdığınıza dair değerli bir kontrol sağlayabilir.
Son olarak, Origin-Agent-Cluster
başlık yalnızca üzerinde çalışacak güvenli bağlamlaryani HTTPS sayfalarında veya http://localhost
. Localhost olmayan HTTP sayfaları Olumsuz kaynak anahtarlı ajan kümelerini destekler.
Kaynak anahtarlama bir güvenlik özelliği değildir #
Kaynak anahtarlı bir aracı kümesi kullanmak, kaynağınızı aynı siteler arası kaynak sayfalarından eşzamanlı erişimden izole ederken, güvenlikle ilgili başlıklar için koruma sağlamaz. Cross-Origin-Resource-Policy
Ve Cross-Origin-Opener-Policy
. Özellikle, yan kanal saldırılarına karşı güvenilir bir koruma değildir. Hayalet.
Bu biraz şaşırtıcı olabilir, çünkü kaynak anahtarlama bazen kaynağınızın kendi sürecini almasına neden olabilir ve ayrı süreçler, yan kanal saldırılarına karşı önemli bir savunmadır. Ama unutmayın ki Origin-Agent-Cluster
başlık bu konuda sadece bir ipucudur. Tarayıcının, kaynağınıza ayrı bir işlem verme yükümlülüğü yoktur ve bunu çeşitli nedenlerle yapmayabilir:
-
Bir tarayıcı bunu yapacak teknolojiyi uygulamayabilir. Örneğin, şu anda Safari ve Firefox kendi süreçlerine ayrı sekmeler koyabilir, ancak bunu henüz iframe’ler için yapamaz.
-
Tarayıcı, ayrı bir işlemin ek yüküne değmeyeceğine karar verebilir. Örneğin, düşük belleğe sahip Android cihazlarda veya Android WebView’da Chrome mümkün olduğunca az işlem kullanır.
-
Tarayıcı, kullanıcının isteğine saygı duymak isteyebilir.
Origin-Agent-Cluster
başlık belirtir, ancak süreçlerden farklı izolasyon teknolojisi kullanarak bunu yapabilir. Örneğin, Chrome keşfetmek bu tür bir performans izolasyonu için süreçler yerine iş parçacıkları kullanmak. -
Farklı bir sitede çalışan kullanıcı veya kod, kaynağınızdaki site anahtarlı bir sayfaya gitmiş olabilir. tutarlılık garantisi tekme atmak ve
Origin-Agent-Cluster
başlık tamamen yoksayılacak.
Bu nedenlerden dolayı, kaynak anahtarlı ajan kümelerini bir güvenlik özelliği olarak düşünmemek önemlidir. Bunun yerine, kaynağınızın özel kaynaklardan yararlanacağını (ve sizin de bu kaynaktan vazgeçmeye istekli olduğunuzu) ima ederek tarayıcının kaynak tahsisine öncelik vermesine yardımcı olmanın bir yoludur. belirli özellikler karşılığında).
Geri bildirim #
Chrome ekibi, Google Chrome’u kullanıyorsanız veya kullanmayı düşünüyorsanız, sizden haber almaktan memnuniyet duyacaktır. Origin-Agent-Cluster
başlık. Kamu ilginiz ve desteğiniz, özelliklere öncelik vermemize ve diğer tarayıcı satıcılarına bunların ne kadar önemli olduğunu göstermemize yardımcı olur. tweet at @ChromiumDev ve Chrome DevRel’in düşüncelerinizi ve deneyimlerinizi bilmesini sağlayın.
Spesifikasyon veya özelliğin nasıl çalıştığına ilişkin ayrıntılar hakkında daha fazla sorunuz varsa, şu adreste bir sorun oluşturabilirsiniz: HTML Standardı GitHub deposu. Ayrıca, Chrome’un uygulanmasıyla ilgili herhangi bir sorunla karşılaşırsanız şu adrese bir hata bildiriminde bulunabilirsiniz: yeni.crbug.com Bileşenler alanı olarak ayarlıyken Internals>Sandbox>SiteIsolation
.
Daha fazla bilgi edin #
Kaynak anahtarlı aracı kümeleri hakkında daha fazla bilgi edinmek için şu bağlantılardan ayrıntıları inceleyebilirsiniz: