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.
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
✨ 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
oSameSite:none
oppure ha il prefisso__Host
. I cookieSecure
vengono impostati solo su HTTPS, ma non suhttp://localhost
per tutti i browser. Inoltre, dato cheSameSite:none
e__Host
richiedono che il cookie siaSecure
, 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 esempiomysite.example
. In genere, questo significa che hai sostituito il file host locali: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
olocalhost
(mysite.localhost
).test
non prevede un trattamento speciale nei browser, al contrario dilocalhost
: 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 ahttp://<whatever name you like>.localhost:<your port>
in Chrome o Edge. Presto questo sarà possibile anche in Firefox e Safari. Puoi farlo (con sottodomini comemysite.localhost
) perchélocalhost
non è solo un nome host, ma è anche un dominio di primo livello completo, comecom
.
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.