Jeśli pracujesz nad małym projektem frontendowym i chcesz przetestować go lokalnie, zazwyczaj otwierasz go, wskazując katalog lokalny w przeglądarce internetowej, na przykład wpisując file: /// home / erick / mysuperproject / index .html na pasku adresu URL. Jeśli jednak witryna próbuje załadować zasoby, nawet jeśli są one umieszczone w katalogu lokalnym, możesz zobaczyć takie ostrzeżenia:
XMLHttpRequest nie może załadować pliku: ///home/erick/mysuperproject/mylibrary.js. Żądania z różnych źródeł są obsługiwane tylko w przypadku protokołu HTTP.
Chrome i inne nowoczesne przeglądarki mają zaimplementowane ograniczenia bezpieczeństwa dla żądań z różnych źródeł, co oznacza, że nie można wczytywać niczego za pośrednictwem pliku: ///, zawsze należy używać protokołu http: //, nawet lokalnie zgodnie z zasadami tego samego pochodzenia. To proste, musisz zamontować serwer WWW, aby uruchomić tam swój projekt.
To nie koniec świata i istnieje wiele rozwiązań, w tym stary dobry Apache (z VirtualHosts, jeśli prowadzisz kilka innych projektów), node.js z express, serwer Ruby itp. Lub po prostu modyfikując ustawienia wyszukiwarki.
Jest jednak prostsze i lżejsze rozwiązanie dla leniwych. Możesz użyć SimpleHTTPServer Pythona. Jest już w pakiecie z Pythonem, więc nie musisz niczego instalować ani konfigurować!
Na przykład cd do katalogu swojego projektu
1 cd / home / erick / mysuperproject, a następnie po prostu użyj
1 python -m SimpleHTTPServer I to wszystko, zobaczysz ten komunikat w swoim terminalu
1 Obsługa HTTP na porcie 0.0.0.0 8000 ... Więc teraz możesz wrócić do przeglądarki i odwiedzić http://0.0.0.0:8000wszystkie pliki katalogowe, które są tam obsługiwane. Możesz skonfigurować port i inne rzeczy, po prostu zapoznaj się z dokumentacją. Ale ta sztuczka działa dla mnie, gdy spieszy mi się, aby przetestować nową bibliotekę lub opracować nowy pomysł.
Proszę bardzo, miłego kodowania!
EDYCJA:
W Pythonie 3+ SimpleHTTPServer został zastąpiony przez http.server. Na przykład w Pythonie 3.3 następujące polecenie jest równoważne:
python -m http.server 8000