L'utilizzo di http://localhost per lo sviluppo locale è accettabile nella maggior parte dei casi, tranne in alcuni casi speciali. Questo post spiega quando devi eseguire il tuo sito di sviluppo locale con HTTPS.
Consulta anche Come utilizzare HTTPS per lo sviluppo locale.
In questo post, le affermazioni su localhost
sono valide anche per 127.0.0.1
e [::1]
, poiché descrivono entrambi l'indirizzo del computer locale, chiamato anche "indirizzo loopback". Inoltre, per semplificare, il numero di porta non è specificato.
Quindi, quando vedi http://localhost
, leggi http://localhost:{PORT}
o http://127.0.0.1:{PORT}
.
Riepilogo
Quando sviluppi localmente, utilizza http://localhost
per impostazione predefinita. Service Worker, API Web Authentication e altro ancora funzioneranno.
Tuttavia, nei seguenti casi, avrai bisogno di HTTPS per lo sviluppo locale:
- Debug dei problemi relativi ai contenuti misti
- Utilizzo di HTTP/2 e versioni successive
- Utilizzo di API o librerie di terze parti che richiedono HTTPS
Utilizzo di un nome host personalizzato
✨ Ecco tutto ciò che devi sapere. Se vuoi 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, devi fare in modo che il sito di sviluppo locale si comporti come un sito HTTPS.
Utilizza http://localhost
per impostazione predefinita
I browser trattano http://localhost
in modo speciale: anche se è HTTP, si comporta per lo più come un sito HTTPS.
Su http://localhost
, i Service Worker, le API di 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 eseguire il debug locale di un problema che si verifica solo su un sito web HTTPS, ma non su un sito HTTP, nemmeno su
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. HTTP/2 non sicuro o versioni successive non sono supportati, nemmeno su
localhost
. - Devi testare localmente le API o le librerie di terze parti che richiedono HTTPS (ad esempio OAuth).
Non utilizzi
localhost
, ma un nome host personalizzato per lo sviluppo locale, ad esempiomysite.example
. In genere, significa che hai sostituito il file hosts locale:In questo caso, per impostazione predefinita Chrome, Edge, Safari e Firefox non considerano
mysite.example
sicuro, anche se si tratta di un sito locale. Pertanto, non si comporterà come un sito HTTPS.Altri casi. Questo non è un elenco esaustivo, ma se riscontri un caso non elencato qui, tieni presente che si verificheranno dei problemi il giorno
http://localhost
o il sito non si comporterà esattamente come il tuo sito di produzione. 🙃
In tutti questi casi, devi utilizzare HTTPS per lo sviluppo locale.
Come utilizzare HTTPS per lo sviluppo locale
Se devi utilizzare HTTPS per lo sviluppo locale, consulta 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 senza elementi aggiuntivi come
mysite
, perché se esiste un dominio di primo livello (TLD) con lo stesso nome (mysite
), potresti riscontrare problemi. E non è così improbabile: nel 2020 esistono oltre 1500 TLD e l'elenco è in crescita.coffee
,museum
,travel
e molti nomi di grandi aziende (forse anche la tua) sono domini di primo livello. Consulta l'elenco completo qui. - Utilizza solo i tuoi domini o quelli riservati a questo scopo. Se non hai un dominio, puoi utilizzare
test
olocalhost
(mysite.localhost
).test
non ha un trattamento speciale nei browser, malocalhost
sì: Chrome ed Edge supportanohttp://<name>.localhost
out of the box e si comporteranno in modo sicuro quando lo farà localhost. Prova: esegui qualsiasi sito su localhost e accedi ahttp://<whatever name you like>.localhost:<your port>
in Chrome o Edge. A breve questa opzione potrebbe essere disponibile anche in Firefox e Safari. Il motivo per cui puoi farlo (avere sottodomini comemysite.localhost
) è chelocalhost
non è solo un nome host: è anche un TLD completo, comecom
.
Scopri di più
Un ringraziamento a tutti i revisori per i contributi e i feedback, in particolare a Ryan Sleevi, Filippo Valsorda, Milica Mihajlija, Rowan Merewood e Jake Archibald. 🙌
Immagine hero di @moses_lee su Unsplash, modificata.