Votre défi consiste à écrire un serveur HTTP code-golf acceptant les requêtes GET. Il n'est évidemment pas nécessaire qu'il soit complet, mais il doit servir les fichiers d'un répertoire.
Règles:
- Le serveur HTTP doit écouter sur le port TCP 36895 (0x901F)
- Il doit servir les fichiers depuis des
/var/www
systèmes * NIX (par exemple Linux) ouC:\hgolf
Windows. - Vous pouvez ignorer tous les en-têtes HTTP entrants sauf le
GET
lui - même. - Si la méthode HTTP n'est pas GET, vous devez renvoyer un code d'état "405 non pris en charge" et un corps de "405 non pris en charge".
- Si le fichier n'existe pas, vous devez renvoyer un code d'état "Fichier 404 non trouvé" et un corps de "Fichier 404 introuvable".
- Si le fichier existe mais n'a pas pu être lu pour une raison quelconque, vous devez renvoyer un code d'état "500 Erreur de serveur" et un corps de "500 Erreur de serveur".
- Si l'utilisateur demande
/
ou toute autre racine de répertoire existante (par exemple,/foo/
s'ilfoo
existe un répertoire/var/www/
), répondez avec une page vierge. - Votre réponse doit contenir au moins les en-têtes minimaux pour permettre l’affichage du contenu sur Firefox 8.0 et Internet Explorer 8.0.
- Vous devez répondre avec l'en-
Content-Type
tête défini, mais vous devez uniquement prendre en charge les extensionshtml => text/html
ettxt => text/plain
. Pour toute autre extension de fichier, envoyezapplication/octet-stream
comme type de contenu. - Votre code doit pouvoir transférer à la fois les données ASCII et binaires, bien que vous ne deviez pas explicitement faire la distinction entre les deux.
- Vous ne pouvez pas utiliser de bibliothèques tierces.
- Vous ne pouvez pas utiliser de classes intégrées ni de fonctionnalités conçues pour traiter les requêtes HTTP (par exemple
HttpListener
en C #). - Si votre code ne fonctionne que sur un système d'exploitation spécifique en raison des API de socket que vous avez utilisées, veuillez l'indiquer.
Les solutions doivent inclure une image montrant qu'elle sert une page HTML à un navigateur.
Si vous avez des questions, n'hésitez pas à demander! :)
http
module dans Node.js est-il ok?
..
le chemin comme moyen de sortir de la racine du document définie).