Achtergrond
Chrome 94 introduceerde een blokkering van de toegang tot privénetwerken vanaf niet-beveiligde openbare websites. De lopende proef voor de beëindiging van Private Network Access vanuit niet-beveiligde contexten heeft problemen aan het licht gebracht bij het migreren van getroffen websites naar HTTPS. Een veelvoorkomend probleem is de moeilijkheid om privé-apparaten naar HTTPS te migreren, wat leidt tot overtredingen van gemengde inhoudscontroles.
Om de eerder genoemde uitdaging aan te pakken, is er een nieuwe toestemmingsprompt beschikbaar onder een origin-proefversie van Chrome 120
Toestemmingsprompt als de nieuwe optie
Door het nieuwe targetAddressSpace
attribuut als ophaaloptie toe te voegen, kan het verzoek de controle op gemengde inhoud overslaan.
Voorbeeld:
fetch("http://router.local/ping", {
targetAddressSpace: "private",
});
In overeenstemming met Private Network Access: preflights introduceren , wordt elk particulier netwerkverzoek voorafgegaan door een preflightverzoek. Dit preflightverzoek bevat een nieuwe header, Access-Control-Request-Private-Network: true
, en het bijbehorende antwoord moet de header Access-Control-Allow-Private-Network: true
bevatten.
Om tegemoet te komen aan de nieuwe toestemmingsprompt, hadden we apparaten nodig om twee nieuwe antwoordheaders op te nemen: Private-Network-Access-Name
en Private-Network-Access-ID
.
Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>
Voorbeeld:
Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"
Private-Network-Access-ID
: een 48-bits waarde weergegeven als 6 hexadecimale bytes, gescheiden door dubbele punten. Private-Network-Access-Name
: Een geldige naam als tekenreeks die overeenkomt met de reguliere expressie van ECMAScript /^[a-z0-9_-.]+$/
. De maximale lengte van de naam is 248 UTF-8-code-eenheden.
Demo
Je kunt de demo bekijken op: https://private-network-access-permission-test.glitch.me/ .
Meld u aan voor een origin-proefperiode
Om ervoor te zorgen dat Private Network Access Perpt Prompt ontwikkelaars helpt bij het toepassen van veilige contextbeperkingen voor toegang tot privénetwerken, stellen we deze beschikbaar in Chrome vanaf versie 120 tot 122 als origin-proefversie.
Registreer u voor de origin-proefversie om uw website in staat te stellen de toestemmingsprompt te gebruiken:
- Vraag een token aan voor uw herkomst.
- Gebruik het token op een van de volgende manieren:
- In je HTML:
html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
- In uw JavaScript:
js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
- In de HTTP-headers:
text Origin-Trial: TOKEN_GOES_HERE
- In je HTML:
Voor feedback of suggesties met betrekking tot deze functie kunt u een probleem indienen in de GitHub-repository .