Arka plan
Chrome 94, güvenli olmayan herkese açık web sitelerinden özel ağ erişimini engelledi. Devam eden Güvenli olmayan bağlamlardan özel ağ erişiminin kullanımdan kaldırılmasına yönelik deneme, etkilenen web sitelerini HTTPS'ye taşımayla ilgili zorlukları ortaya çıkardı. Özel cihazları HTTPS'ye taşımanın zor olması ve bu durumun karma içerik kontrolü ihlallerine yol açması yaygın bir endişe kaynağıdır.
Daha önce bahsedilen sorunu gidermek için Chrome 120'den itibaren kaynak denemesi kapsamında yeni bir izin istemi sunulmaktadır.
Yeni seçenek olarak izin istemi
Yeni targetAddressSpace
özelliğini getirme seçeneği olarak ekleyerek istek, karma içerik kontrolünü atlayabilir.
Örnek:
fetch("http://router.local/ping", {
targetAddressSpace: "private",
});
Özel Ağ Erişimi: Ön kontrolleri kullanıma sunuyoruz başlıklı makalede belirtildiği gibi, tüm özel ağ isteklerinden önce bir ön uç kontrol isteği gönderilir. Bu ön uç isteğinde yeni bir başlık (Access-Control-Request-Private-Network: true
) bulunur ve ilgili yanıtta Access-Control-Allow-Private-Network: true
başlığı bulunmalıdır.
Yeni izin istemiyle uyumlu olması için cihazların Private-Network-Access-Name
ve Private-Network-Access-ID
olmak üzere iki yeni yanıt başlığı eklemesi gerekiyordu.
Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>
Örnek:
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"
Private-Network-Access-ID
: İki nokta işaretiyle ayrılmış 6 on altılı bayt olarak sunulan 48 bitlik bir değer.
Private-Network-Access-Name
: ECMAScript normal ifadesi /^[a-z0-9_-.]+$/
ile eşleşen bir dize olarak geçerli bir ad. Adın maksimum uzunluğu 248 UTF-8 kod birimidir.
Demo
Demoyu https://private-network-access-permission-test.glitch.me/ adresinden inceleyebilirsiniz.
Kaynak denemesine kaydolma
Özel Ağ Erişimi İzni İstem'inin, geliştiricilerin özel ağ erişimi için güvenli bağlam kısıtlamalarını benimsemesine yardımcı olmasını sağlamak amacıyla bu kısıtlamaları Chrome 120 ile 122 sürümleri arasında kaynak denemesi olarak kullanıma sunuyoruz.
Web sitenizin izin isteminden yararlanabilmesi için kaynak deneme sürümüne kaydolun:
- Kaynağınız için jeton isteyin.
- Jetonu aşağıdaki yöntemlerden biriyle kullanın:
- HTML'nizde:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- JavaScript'inizde:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- HTTP başlıklarında:
text Origin-Trial: TOKEN_GOES_HERE
- HTML'nizde:
Bu özellikle ilgili geri bildirim veya önerileriniz için lütfen GitHub veri havuzunda sorun bildirin.