Kiedy używać protokołu HTTPS na potrzeby programowania lokalnego

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[::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

    Lista przypadków, w których podczas lokalnego tworzenia aplikacji musisz używać protokołu HTTPS.
    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:

    Zrzut ekranu przedstawiający terminal, na którym edytowany jest plik hosts
    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.example za 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://localhost lub 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, travel i 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ć test lub localhost (mysite.localhost). test nie jest specjalnie traktowana w przeglądarkach, ale localhost tak: Chrome i Edge obsługują http://<name>.localhost od 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 do http://<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 jak mysite.localhost), ponieważ localhost to nie tylko nazwa hosta, ale też pełna domena najwyższego poziomu, np. com.

Więcej informacji

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.