Quando utilizzare HTTPS per lo sviluppo locale

Utilizzare http://localhost per lo sviluppo locale è sempre accettabile, tranne che in alcuni casi speciali. Questo post spiega quando è necessario eseguire il sito di sviluppo locale con HTTPS.

Maud Nalpas
Maud Nalpas

Consulta anche: Come utilizzare HTTPS per lo sviluppo locale.

In questo post, le dichiarazioni relative a localhost sono valide anche per 127.0.0.1 e [::1], poiché descrivono entrambi l'indirizzo del computer locale, chiamato anche "indirizzo di loopback". Inoltre, per semplificare le cose, il numero di porta non è specificato. Quindi, quando vedi http://localhost, leggilo come http://localhost:{PORT} o http://127.0.0.1:{PORT}.

Riepilogo

Quando sviluppi in locale, utilizza http://localhost per impostazione predefinita. funzioneranno i service worker, l'API Web Authentication e altri ancora. Tuttavia, nei seguenti casi, hai bisogno di HTTPS per lo sviluppo locale:

  • Impostare i cookie sicuri in modo coerente nei vari browser
  • Debug di problemi con contenuti misti
  • Utilizzo di HTTP/2 e versioni successive
  • Utilizzo di librerie o API di terze parti che richiedono HTTPS
  • Utilizzo di un nome host personalizzato

    Un elenco dei casi in cui è necessario utilizzare HTTPS per lo sviluppo locale.
    Quando utilizzare HTTPS per lo sviluppo locale.

✨ Questo è tutto ciò che devi sapere. Se ti interessa saperne di più, continua a leggere.

Perché il tuo sito di sviluppo deve comportarsi in modo sicuro

Per evitare problemi imprevisti, è consigliabile che il sito di sviluppo locale si comporti il più possibile come il sito web di produzione. Pertanto, se il tuo sito web di produzione utilizza HTTPS, è opportuno che il tuo sito di sviluppo locale si comporti come un sito HTTPS.

Usa http://localhost per impostazione predefinita

I browser trattano http://localhost in modo speciale: benché sia HTTP, si comporta principalmente come un sito HTTPS.

Su http://localhost, i service worker, le API dei sensori, le API di autenticazione, i pagamenti e altre funzionalità che richiedono determinate garanzie di sicurezza sono supportati e si comportano esattamente come su un sito HTTPS.

Quando utilizzare HTTPS per lo sviluppo locale

Potresti riscontrare casi speciali in cui http://localhost non si comporta come un sito HTTPS oppure potresti semplicemente voler utilizzare un nome di sito personalizzato diverso da http://localhost.

Devi utilizzare HTTPS per lo sviluppo locale nei seguenti casi:

  • Devi impostare un cookie localmente che sia Secure o SameSite:none oppure ha il prefisso __Host. I cookie Secure vengono impostati solo su HTTPS, ma non su http://localhost per tutti i browser. Inoltre, dato che SameSite:none e __Host richiedono che il cookie sia Secure, l'impostazione di questi cookie sul tuo sito di sviluppo locale richiede anche il protocollo HTTPS.

  • Devi eseguire il debug localmente di un problema che si verifica solo su un sito web HTTPS ma non su un sito HTTP, nemmeno http://localhost, ad esempio un problema di contenuti misti.

  • Devi testare o riprodurre localmente un comportamento specifico per HTTP/2 o versioni successive. Ad esempio, se devi testare le prestazioni di caricamento su HTTP/2 o versioni successive. I protocolli HTTP/2 o versioni successive non sicuri non sono supportati, nemmeno su localhost.

  • Devi testare a livello locale le librerie di terze parti o le API che richiedono HTTPS (ad esempio OAuth).

  • Non stai utilizzando localhost, ma un nome host personalizzato per lo sviluppo locale, ad esempio mysite.example. In genere, questo significa che hai sostituito il file host locali:

    Screenshot di un terminale che modifica un file hosts
    Modifica di un file hosts per aggiungere un nome host personalizzato.

    In questo caso, Chrome, Edge, Safari e Firefox per impostazione predefinita non considerano mysite.example come sicuro, anche se è un sito locale. in modo che non si comporti come un sito HTTPS.

  • Altri casi. Non si tratta di un elenco esaustivo, ma se riscontri una richiesta non inclusa nell'elenco, lo saprai: su http://localhost alcuni elementi non funzioneranno o si comporteranno come il tuo sito di produzione. 🙃

In tutti questi casi, è necessario utilizzare HTTPS per lo sviluppo locale.

Come utilizzare HTTPS per lo sviluppo locale

Se devi utilizzare HTTPS per lo sviluppo locale, leggi l'articolo Come utilizzare HTTPS per lo sviluppo locale.

Suggerimenti se utilizzi un nome host personalizzato

Se utilizzi un nome host personalizzato, ad esempio modificando il file hosts:

  • Non utilizzare un nome host semplice come mysite. Se esiste un dominio di primo livello (TLD) che ha lo stesso nome (mysite), potrebbero verificarsi dei problemi. E non è così improbabile: nel 2020 ci sono oltre 1500 TLD e l'elenco sta crescendo. coffee, museum, travel e molti nomi di grandi aziende (forse anche per l'azienda per cui lavori) sono domini di primo livello. Consulta l'elenco completo qui.
  • Utilizza solo domini tuoi o riservati a questo scopo. Se non hai un dominio personale, puoi utilizzare test o localhost (mysite.localhost). test non prevede un trattamento speciale nei browser, al contrario di localhost: Chrome ed Edge supportano la funzionalità http://<name>.localhost pronta all'uso e si comporteranno in modo sicuro a differenza di localhost. Prova: esegui qualsiasi sito su localhost e accedi a http://<whatever name you like>.localhost:<your port> in Chrome o Edge. Presto questo sarà possibile anche in Firefox e Safari. Puoi farlo (con sottodomini come mysite.localhost) perché localhost non è solo un nome host, ma è anche un dominio di primo livello completo, come com.

Scopri di più

Grazie mille per il contributo e il feedback a tutti i recensori, in particolare Ryan Sleevi, Filippo Valsorda, Milica Mihajlija, Rowan Merewood e Jake Archibald. 🙌

Immagine hero di @moses_lee su Unsplash, modificata.