Ihre Herausforderung besteht darin, einen Code-Golf-HTTP-Server zu schreiben, der GET-Anforderungen akzeptiert. Es muss natürlich nicht voll funktionsfähig sein, aber es muss Dateien aus einem Verzeichnis bereitstellen.
Regeln:
- Der HTTP-Server muss den TCP-Port 36895 (0x901F) überwachen
- Es muss Dateien von einem
/var/www
* NIX-System (z. B. Linux) oderC:\hgolf
unter Windows bereitstellen . - Sie können alle eingehenden HTTP-Header außer dem
GET
selbst ignorieren . - Wenn die HTTP-Methode nicht GET ist, müssen Sie den Statuscode "405 Not Supported" und den Body "405 Not Supported" zurücksenden.
- Wenn die Datei nicht vorhanden ist, müssen Sie den Statuscode "404-Datei nicht gefunden" und den Text "404-Datei nicht gefunden" zurücksenden.
- Wenn die Datei existiert, aber aus irgendeinem Grund nicht gelesen werden konnte, müssen Sie den Statuscode "500 Server Error" und den Body "500 Server Error" zurücksenden.
- Wenn der Benutzer eine Anforderung
/
oder ein anderes vorhandenes Stammverzeichnis (z. B./foo/
wo ein Verzeichnisfoo
vorhanden ist/var/www/
) stellt, antworten Sie mit einer leeren Seite. - Ihre Antwort muss mindestens die Mindestanzahl an Headern enthalten, damit der Inhalt in Firefox 8.0 und Internet Explorer 8.0 angezeigt werden kann
- Sie müssen mit dem
Content-Type
Header-Set antworten , müssen aber nur die Erweiterungenhtml => text/html
und unterstützentxt => text/plain
. Für jede andere Dateierweiterung senden Sieapplication/octet-stream
als Inhaltstyp. - Ihr Code muss sowohl ASCII- als auch Binärdaten übertragen können, obwohl Sie nicht explizit zwischen beiden unterscheiden müssen.
- Sie dürfen keine Bibliotheken von Drittanbietern verwenden.
- Sie dürfen keine eingebauten Klassen oder Features zum Verarbeiten von HTTP-Anforderungen verwenden (z. B.
HttpListener
in C #). - Wenn Ihr Code aufgrund der von Ihnen verwendeten Socket-APIs nur auf einem bestimmten Betriebssystem funktioniert, geben Sie dies bitte an.
Die Lösungen müssen ein Bild enthalten, das zeigt, wie eine HTML-Seite an einen Browser gesendet wird.
Wenn Sie Fragen haben, können Sie diese gerne stellen! :)
http
Modul in Node.js in Ordnung?
..
den Pfad erlauben würden, um aus dem definierten Dokumentenstamm auszubrechen).