Warum brauche ich einen lokalen Server für die Entwicklung von HTML5-Spielen?

7

Ich bin neu in der HTML5-Spieleentwicklung. Ich versuche, etwas mit Pixi.js zu erstellen, aber als ich versuchte, es in einem Browser anzuzeigen, sah ich eine leere Seite. Gemäß dem Tutorial, dem ich folge , muss ich einen lokalen Server einrichten. Ich bin mir jedoch nicht sicher, warum ich das tun muss.

Können Sie mir bitte sagen, warum ich einen lokalen Server benötige, um HTML-Dateien in meinem Browser auszuführen?

Hinterfrage alles
quelle
Für allgemeines HTML benötigen Sie keinen lokalen Server und können die Datei einfach in Ihrem Browser ausführen. Javascript ist alles clientseitig, so dass Sie alles im Browser erledigen können. Andere Sprachen sind serverseitig, wie PHP, und sie erfordern einen Server. Wer sagt Ihnen, dass Sie einen lokalen Server benötigen?
Ultifinitus
1
Ich muss wohl irgendwo falsch gelesen und eine Menge Informationen zusammengetragen haben. Ich habe versucht, die Pixi.js zu laden, aber das Ergebnis war eine leere Seite. Ich folge auch diesem Tutorial ( flippinawesome.org/2013/11/04/… ), in dem er sagt, er solle einen lokalen Server einrichten
Question-Everything
Es ist keine schlechte Idee, einen lokalen Server zu haben (wahrscheinlich so etwas wie xampp anstelle von nacktem Apache), da die Umgebung beim Starten Ihrer Produktionssite konsistent ist. Aber du brauchst bestimmt keinen!
Ultifinitus
1
Sie benötigen keine für grundlegende Funktionen, aber Sie tun dies für eine Reihe spezifischer Dinge (z. B. wie Browser auf bestimmte Ressourcen zugreifen). Laden Sie also einfach xampp von www.apachefriends.org herunter und fertig.
Schock

Antworten:

12

Webbrowser deaktivieren einige Javascript-Funktionen aus Sicherheitsgründen.

Ich wette, dass Sie nur auf Google Chrome klicken, XMLHttpRequestum lokale Dateien standardmäßig zu verbieten ( Informationen zum Deaktivieren finden Sie in dieser Antwort auf SO , aber Vorsicht: Dies ist gefährlich). Weitere Informationen finden Sie auf dieser Seite der Chrome-Entwicklungsseite.

Aus diesem Grund müssen Sie einen lokalen HTTP-Server einrichten, um die Sicherheitsverriegelung zu umgehen.

Laurent Couvidou
quelle
2

Wenn Sie nur die Root- htmlDatei des Spiels in einem Browser öffnen , lässt Ihr Browser (hoffentlich) dieser Seite keinen Zugriff auf andere Dateien zu. Dies ist eine Sicherheitsfunktion, die den Schaden durch schädliche Skripte begrenzt.

Wenn Sie sich in einer Befehlszeile wohl fühlen und Python Version 2 installiert haben, können Sie einen lokalen Webserver einfach ausführen, indem Sie in das gewünschte Stammverzeichnis wechseln und ausführen

python -m SimpleHTTPServer

Hier wird der Inhalt des aktuellen Verzeichnisses auf dem localhostPort bereitgestellt 8888, wie hier dokumentiert . Unterverzeichnisse werden bereitgestellt , übergeordnete Verzeichnisse nicht , sodass die Dinge gut enthalten bleiben.

Das Python 3-Äquivalent ist python -m http.server . (Danke Mike !)

Anko
quelle
2
Wenn Sie Python 3 ausführen, sollten Sie die python -m http.server [port] Quelle verwenden
Mike Cluck
1

Ich hatte selbst ähnliche Probleme in der Vergangenheit.

Serving Pages

Ihre HTML-Datei sendet möglicherweise HTTP-Anforderungen an Localhost, um Ressourcen (z. B. Pixi.js) zu laden, und fordert keine Dateien an. Wenn nicht, macht Pixi.js das möglicherweise selbst.

Dies ist ein nützliches Verhalten auf einem Webserver, da einige der möglicherweise angeforderten Dinge dynamisch generiert werden können, sich in Reaktion auf Cookies unterscheiden oder ähnliches. XMLHttpRequests beziehen sich häufig auf diese Art von dynamischem Inhalt. In diesem Fall muss der Computer, der die Anforderung verarbeitet, wissen, was mit der Datei zu tun ist, um die richtige Antwort zu generieren. (Wenn dies nicht der Fall wäre, könnten serverseitige Skripts nicht ausgeführt werden. Sie erhalten lediglich eine Kopie der Datei.) Dafür ist der Webserver zuständig.

Die Kehrseite

Möchten Sie auch, dass Seiten aus dem Internet auf alle Ihre lokalen Dateien zugreifen können? Beliebige Skripte nach Belieben ausführen? Wie andere Antworten impliziert haben, ist dies ein großes Sicherheitsrisiko. Deshalb ist es standardmäßig deaktiviert. Durch das Einrichten eines Webservers können Sie den Zugriff auf bestimmte Dateien und nicht auf andere zulassen sowie festlegen, wie auf Dinge zugegriffen oder diese ausgeführt werden.

Was ist zu tun?

In Ihrem Fall ist es nicht so praktisch. Wenn im Tutorial ein Webserver empfohlen wird, würde ich diesen verwenden. Wenn nicht, benutze ich Lighttpd. Es gibt auch den Python SimpleHTTPServer, der in einer anderen Antwort erwähnt wird.

Hoffe das hilft.

Dave
quelle
0

Aufgrund der Standardsicherheitseinstellungen des Browsers

Ein Webbrowser verfügt über einige zusätzliche Sicherheitseinstellungen, wenn eine HTML-Seite aus dem lokalen Speicher angezeigt wird (z. B. das Öffnen einer HTML-Datei mit Ihrem Browser). Ein Teil dieser Einstellungen besteht darin, AJAX-Anforderungen nicht zuzulassen (Javascript fordert andere Seiten an). Ein Teil davon muss darin bestehen, dass AJAX-Anforderungen immer auf dieselbe Domäne beschränkt sind ( http://example.com kann nur AJAX-Anforderungen auf http://example.com ausführen ) und eine lokale HTML-Datei keine Domäne hat.

Möglicherweise fordert Ihr HTML5-Spielframework seine Assets über AJAX an, um schneller reagieren zu können.

Durch das Booten eines lokalen Webservers zur Bereitstellung der Dateien verfügt der Browser über eine Domäne, in der die verschiedenen AJAX-Anforderungen auf die Sicherheitslogik des Browsers eingestellt werden können.

Kostas
quelle