Używanie adresu http://localhost na potrzeby lokalnego programowania jest w większości przypadków w porządku, z wyjątkiem niektórych szczególnych sytuacji. Z tego posta dowiesz się, kiedy musisz uruchomić lokalną witrynę programistyczną za pomocą protokołu HTTPS.
Zobacz też: Jak używać protokołu HTTPS w lokalnym środowisku deweloperskim.
W tym poście stwierdzenia dotyczące adresu localhost są też ważne w przypadku adresów 127.0.0.1 i [::1], ponieważ oba te adresy opisują lokalny adres komputera, zwany też „adresem zwrotnym”. Dla uproszczenia nie podajemy numeru portu.
Gdy zobaczysz symbol http://localhost, odczytaj go jako http://localhost:{PORT} lub http://127.0.0.1:{PORT}.
Podsumowanie
Podczas tworzenia aplikacji lokalnie domyślnie używaj http://localhost. Będą działać Service Workers, Web Authentication API i inne funkcje.
W tych przypadkach musisz jednak używać protokołu HTTPS do programowania lokalnego:
- Debugowanie problemów z treścią mieszaną
- Używanie protokołu HTTP/2 i nowszych
- Korzystanie z bibliotek lub interfejsów API innych firm, które wymagają protokołu HTTPS
Korzystanie z niestandardowej nazwy hosta
Kiedy używać protokołu HTTPS w przypadku lokalnego programowania.
✨ To wszystko, co musisz wiedzieć. Jeśli chcesz dowiedzieć się więcej, czytaj dalej.
Dlaczego witryna deweloperska powinna być bezpieczna
Aby uniknąć nieoczekiwanych problemów, zadbaj o to, aby lokalna witryna deweloperska działała jak najbardziej podobnie do witryny produkcyjnej. Jeśli więc Twoja witryna produkcyjna używa protokołu HTTPS, chcesz, aby lokalna witryna deweloperska zachowywała się jak witryna HTTPS.
Używaj aplikacji http://localhost domyślnie
Przeglądarki traktują http://localhost w specjalny sposób: chociaż jest to HTTP, w większości przypadków zachowuje się jak witryna HTTPS.
Na http://localhost obsługiwane są Service Workers, interfejsy Sensor API, interfejsy Authentication API, płatności i inne funkcje, które wymagają określonych gwarancji bezpieczeństwa. Działają one dokładnie tak samo jak w przypadku witryny HTTPS.
Kiedy używać HTTPS w przypadku lokalnego środowiska programistycznego
Możesz napotkać szczególne przypadki, w których http://localhost nie zachowuje się jak witryna HTTPS. Możesz też po prostu chcieć użyć niestandardowej nazwy witryny, która nie jest http://localhost.
W tych przypadkach musisz używać protokołu HTTPS na potrzeby lokalnego programowania:
- Musisz lokalnie debugować problem, który występuje tylko w witrynie HTTPS, ale nie w witrynie HTTP, nawet
http://localhost, np. problem z treściami mieszanymi. - Musisz lokalnie przetestować lub odtworzyć zachowanie specyficzne dla protokołu HTTP/2 lub nowszego. Może to być przydatne na przykład wtedy, gdy chcesz sprawdzić wydajność ładowania w protokole HTTP/2 lub nowszym. Niezabezpieczony protokół HTTP/2 lub nowszy nie jest obsługiwany, nawet w przypadku
localhost. - Musisz lokalnie przetestować biblioteki lub interfejsy API innych firm, które wymagają protokołu HTTPS (np. OAuth).
Nie używasz
localhost, ale niestandardowej nazwy hosta na potrzeby lokalnego programowania, np.mysite.example. Zwykle oznacza to, że plik hostów lokalnych został zastąpiony:
Edytowanie pliku hosts w celu dodania niestandardowej nazwy hosta. W tym przypadku przeglądarki Chrome, Edge, Safari i Firefox domyślnie nie uznają adresu
mysite.exampleza bezpieczny, mimo że jest to witryna lokalna. Nie będzie się więc zachowywać jak witryna HTTPS.Inne przypadki To nie jest pełna lista, ale jeśli napotkasz przypadek, którego tu nie ma, będziesz wiedzieć: coś się zepsuje na
http://localhostlub nie będzie działać tak jak Twoja witryna produkcyjna. 🙃
We wszystkich tych przypadkach musisz używać protokołu HTTPS na potrzeby lokalnego programowania.
Jak używać HTTPS w lokalnym środowisku programistycznym
Jeśli chcesz używać protokołu HTTPS w lokalnym środowisku deweloperskim, przeczytaj artykuł Jak używać protokołu HTTPS w lokalnym środowisku deweloperskim.
Wskazówki, jeśli używasz niestandardowej nazwy hosta
Jeśli używasz niestandardowej nazwy hosta, np. edytujesz plik hosts:
- Nie używaj samej nazwy hosta, np.
mysite, ponieważ jeśli istnieje domena najwyższego poziomu (TLD) o tej samej nazwie (mysite), możesz napotkać problemy. Nie jest to mało prawdopodobne: w 2020 roku było ponad 1500 domen najwyższego poziomu, a lista ta stale rośnie.coffee,museum,traveli wiele nazw dużych firm (może nawet nazwa firmy, w której pracujesz!) to domeny najwyższego poziomu. Pełną listę znajdziesz tutaj - Używaj tylko domen, które należą do Ciebie lub są zarezerwowane do tego celu. Jeśli nie masz własnej domeny, możesz użyć
testlublocalhost(mysite.localhost).testnie jest specjalnie traktowana w przeglądarkach, alelocalhosttak: Chrome i Edge obsługująhttp://<name>.localhostod razu i będzie się ona zachowywać bezpiecznie, gdy localhost będzie. Wypróbuj: uruchom dowolną witrynę na hoście lokalnym i uzyskaj dostęp dohttp://<whatever name you like>.localhost:<your port>w Chrome lub Edge. Wkrótce może to być możliwe również w przypadku Firefoksa i Safari. Możesz to zrobić (mieć subdomeny takie jakmysite.localhost), ponieważlocalhostto nie tylko nazwa hosta, ale też pełna domena najwyższego poziomu, np.com.
Więcej informacji
- Konteksty zabezpieczeń
- localhost jako kontekst bezpieczny
- localhost jako bezpieczny kontekst w Chrome
Dziękujemy wszystkim recenzentom za ich wkład i opinie, a w szczególności Ryanowi Sleevi, Filippo Valsordzie, Milicy Mihajliji, Rowanowi Merewoodowi i Jake’owi Archibaldowi. 🙌
Baner powitalny: @moses_lee na Unsplash, po edycji.