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 zorluğu gidermek için Chrome 120'deki kaynak denemesinde yeni bir izin istemi kullanıma sunuldu
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 kontrol isteği gönderilir. Bu ön uç isteğinde yeni bir başlık (Access-Control-Request-Private-Network: true
) yer alır 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 üst üste ile ayrılmış 6 onaltılık 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
Demoya şu adresten göz atabilirsiniz: https://private-network-access-permission-test.glitch.me/.
Kaynak denemesine kaydolma
Özel Ağ Erişimi İzin İstemi'nin geliştiricilerin özel ağ erişimi için güvenli içerik kısıtlamalarını benimsemesine yardımcı olmasını sağlamak amacıyla bu kısıtlamaları Chrome'un 120 ile 122 arasındaki sürümlerinde 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 deposunda sorun bildirin.