Prova dell'origine della richiesta di autorizzazione di accesso alla rete privata: un percorso per la migrazione dei siti web con HTTPS

Yifan Luo
Yifan Luo

Contesto

In Chrome 94 è stato introdotto un blocco all'accesso alle reti private da siti web pubblici non sicuri. La prova in corso del ritiro dell'accesso alla rete privata da contesti non sicuri ha rivelato alcune sfide nella migrazione dei siti web interessati a HTTPS. Un problema comune è la difficoltà di migrazione dei dispositivi privati a HTTPS, che comporta violazioni dei controlli dei contenuti misti.

Per risolvere la sfida menzionata in precedenza, è disponibile una nuova richiesta di autorizzazione in una prova dell'origine di Chrome 120

Richiesta di autorizzazione come nuova opzione

Se aggiungi il nuovo attributo targetAddressSpace come opzione di recupero, la richiesta potrà saltare il controllo dei contenuti misti.

Esempio:

fetch("http://router.local/ping", {
  targetAddressSpace: "private",
});

In conformità con l'articolo Accesso alla rete privata: introduzione dei preflight, qualsiasi richiesta di rete privata sarà preceduta da una richiesta preflight. Questa richiesta preflight includerà una nuova intestazione, Access-Control-Request-Private-Network: true, e la risposta corrispondente dovrà includere l'intestazione Access-Control-Allow-Private-Network: true.

Per soddisfare la nuova richiesta di autorizzazione, abbiamo richiesto ai dispositivi di incorporare due nuove intestazioni di risposta: Private-Network-Access-Name e Private-Network-Access-ID.

Private-Network-Access-Name: <some human-readable device name>
Private-Network-Access-ID: <the MAC address of the device>

Esempio:

Private-Network-Access-Name: "My Smart Toothbrush"
Private-Network-Access-ID: "01:23:45:67:89:0A"

Private-Network-Access-ID: un valore a 48 bit presentato come 6 byte esadecimali separati da due punti. Private-Network-Access-Name: un nome valido come stringa corrispondente all'espressione regolare ECMAScript /^[a-z0-9_-.]+$/. La lunghezza massima del nome è di 248 unità di codice UTF-8.

Demo

Puoi guardare la demo all'indirizzo: https://private-network-access-permission-test.glitch.me/.

Registrati per una prova dell'origine

Per garantire che il prompt di autorizzazione di accesso alla rete privata aiuti gli sviluppatori ad adottare limitazioni di contesto sicuro per l'accesso alla rete privata, le stiamo rendendo disponibili in Chrome dalla versione 120 alla 122 come prova dell'origine.

Registrati alla prova dell'origine per consentire al tuo sito web di usare la richiesta di autorizzazione:

  1. Richiedi un token per la tua origine.
  2. Utilizza il token in uno dei seguenti modi:
    • Nel codice HTML: html <meta http-equiv="Origin-Trial" content="TOKEN_GOES_HERE">
    • Nel codice JavaScript: js const meta = document.createElement('meta'); meta.httpEquiv = 'Origin-Trial'; meta.content = 'TOKEN_GOES_HERE'; document.head.append(meta);
    • Nelle intestazioni HTTP: text Origin-Trial: TOKEN_GOES_HERE

Per eventuali feedback o suggerimenti relativi a questa funzionalità, segnala il problema nel repository di GitHub.

Risorse