Olarak İmzalı HTTP Değişimleri (SXG) distribütör, orijinal içerik yaratıcıları adına SXG dosyalarını teslim edebilirsiniz. SXG’yi destekleyen web tarayıcıları, bu tür SXG dosyalarını orijinal içerik oluşturuculardan teslim edilmiş gibi görüntüler. Bu, gizliliği ihlal etmeden siteler arası ön yükleme uygulamanıza olanak tanır. Bu kılavuz size SXG’yi nasıl düzgün bir şekilde dağıtacağınızı gösterir.
Tarayıcılar arası destek #
Chrome şu anda SXG’yi destekleyen tek tarayıcıdır. Uzlaşı ve Standardizasyon bölümüne bakın. Kaynak İmzalı HTTP Değişimleri daha güncel bilgiler için.
SXG dosyalarını al #
içinde belirtin Accept
sunucunun istekle birlikte bir SXG dosyası döndürmesini istediğiniz istek başlığı:
Accept: application/signed-exchange;v=b3,*/*;q=0.8
Bu kılavuz, SXG dosyalarınızı /var/www/sxg
.
Basit bir SXG dosyası sunun #
Tek bir SXG dosyasını dağıtmak için aşağıdaki başlıkları ekleyin:
Content-Type: application/signed-exchange;v=v3
X-Content-Type-Options: nosniff
Yapılandır nginx
:
http {
...
types {
application/signed-exchange;v=b3 sxg;
}
add_header X-Content-Type-Options nosniff;location / {
more_set_headers "Content-Type: application/signed-exchange;v=b3";
alias /var/www/sxg/;
try_files $uri.sxg $uri =404;
autoindex off;
}
...
Yeni yapılandırmayı içine yükleyin nginx
:
sudo systemctl restart nginx.service
nginx
SXG dosyalarını sunmaya başlayacak. Chrome sunucunuza eriştiğinde, orijinal içerik yayıncısının adresi çubukta görünecektir!
Alt kaynakları önceden getir #
Çoğu web sayfası, CSS, JavaScript, yazı tipleri ve resimler gibi birden çok alt kaynaktan oluşur. SXG’nin içeriği, içerik oluşturucunun özel anahtarı olmadan değiştirilemez. Bu, tarayıcı alt kaynakları çözmeye çalıştığında sorunlara neden olur.
Örneğin, varsayalım index.html.sxg
itibaren bir bağlantısı var
. Bir kullanıcının tarayıcısı SXG dosyasını şu adresten aldığında:
https://distributor.test/example.com/index.html.sxg
bağlantısını bulacaktır . Tarayıcı getirebilir
doğrudan gerçek erişimde, ancak gizliliği korumak için önyükleme aşamasında yapılmamalıdır. Kaynak, önyükleme aşamasında getirildiyse, içerik oluşturucu (
website.test
) hangi içerik dağıtıcısının (distributor.test
) kaynak istiyor.
Distribütör hizmet vermek isterse app.js.sxg
kendi hizmetlerinden ve değiştirmeye çalışır söz konusu alt kaynağın (örneğin,
https://distributor.test/website.test/app.js.sxg
), imza uyuşmazlığına neden olacak ve SXG’yi geçersiz kılacaktır.
Bu sorunu çözmek için, şimdi Chrome’da deneysel bir SXG alt kaynak ön getirme özelliği var. Şu adresten etkinleştirebilirsiniz: about://flags/#enable-sxg-subresource-prefetching
. Alt kaynak önceden getirmeyi kullanmak için aşağıdaki koşullar karşılanmalıdır:
- Yayıncı, SXG’ye aşağıdakiler gibi bir yanıt başlığı girişi yerleştirmelidir:
link: <>;rel="preload";as="script",<>;rel="allowed-alt-sxg";header-integrity="sha256-h6GuCtTXe2nITIHHpJM+xCxcKrYDpOFcIXjihE4asxk="
. Bu, SXG’nin özel bütünlük karması ile değiştirilebilecek alt kaynağı belirtir. - Distribütör, SXG’yi sunarken aşağıdaki gibi bir yanıt başlığı eklemelidir:
link: <https://distributor.test/website.test/app.js.sxg>;rel="alternate";type="application/signed-exchange;v=b3";anchor=""
. Bu, yolunu belirtirapp.js
ve alt kaynağa karşılık gelir.
İlki nispeten kolaydır çünkü nginx-sxg-module
bütünlük sağlamalarını hesaplayabilir ve bunları yukarı akış yanıtlarından bağlantı başlıklarına gömebilir. Ancak ikincisi daha zordur çünkü içerik dağıtıcısı SXG’de belirtilen alt kaynakların farkında olmalıdır.
Bunun dışında herhangi bir alt kaynak yoksa o zaman nginx yapılandırmanıza eklemeniz gereken tek şey:
add_header link <https://distributor.test/website.test/app.js.sxg>;rel="alter...
Ancak bu tür durumlar nadirdir çünkü tipik web siteleri çok sayıda alt kaynaktan oluşur. Ek olarak, distribütör bir SXG dosyasını sunarken uygun bağlantı bağlantısı başlığını eklemelidir. Şu anda bu sorunu çözmenin kolay bir yolu yok, bu nedenle güncellemeler için bizi izlemeye devam edin!
Geribildirim yolla #
Chromium mühendisleri, webpackage-dev@chromium.org adresinden SXG dağıtımıyla ilgili görüşlerinizi duymak istiyor. siz de katılabilirsiniz spesifikasyon tartışmasıveya hata bildir takıma Geri bildiriminiz, standardizasyon sürecine büyük ölçüde yardımcı olacak ve ayrıca uygulama sorunlarının ele alınmasına yardımcı olacaktır. Teşekkür ederim!