Wyzwanie polega na napisaniu serwera HTTP typu golf-golf, który akceptuje żądania GET. Oczywiście nie musi być w pełni funkcjonalny, ale musi obsługiwać pliki z katalogu.
Zasady:
- Serwer HTTP musi nasłuchiwać na porcie TCP 36895 (0x901F)
- Musi obsługiwać pliki z
/var/www
systemów * NIX (np. Linux) lubC:\hgolf
Windows. - Możesz zignorować wszystkie przychodzące nagłówki HTTP oprócz
GET
samego. - Jeśli metoda HTTP nie jest GET, musisz odesłać kod stanu „405 nieobsługiwany” i treść „405 nieobsługiwany”.
- Jeśli plik nie istnieje, musisz odesłać kod stanu „404 File Not Found” i treść „404 File Not Found”.
- Jeśli plik istnieje, ale z jakiegoś powodu nie można go odczytać, należy odesłać kod stanu „Błąd serwera 500” i treść „Błąd serwera 500”.
- Jeśli użytkownik zażąda
/
lub inny istniejący katalog główny (np./foo/
Gdzie katalogfoo
istnieje/var/www/
), odpowiedz pustą stroną. - Twoja odpowiedź musi zawierać co najmniej minimalne nagłówki, aby umożliwić wyświetlanie treści w Firefox 8.0 i Internet Explorer 8.0
- Musisz odpowiedzieć
Content-Type
zestawem nagłówków, ale musisz obsługiwać tylko rozszerzeniahtml => text/html
itxt => text/plain
. W przypadku każdego innego rozszerzenia pliku wyślijapplication/octet-stream
jako typ zawartości. - Twój kod musi być w stanie przesyłać zarówno ASCII, jak i dane binarne, chociaż nie musisz jawnie rozróżniać między nimi.
- Nie możesz używać bibliotek stron trzecich.
- Nie można używać wbudowanych klas ani funkcji zaprojektowanych do przetwarzania żądań HTTP (np.
HttpListener
W języku C #) - Jeśli Twój kod będzie działał tylko w określonym systemie operacyjnym z powodu używanych interfejsów API gniazd, podaj to.
Rozwiązania muszą zawierać obraz pokazujący, jak wyświetla stronę HTML w przeglądarce.
Jeśli masz jakieś pytania, możesz je zadać! :)
http
moduł w Node.js jest w porządku?
..
na ścieżkę jako sposób na wyrwanie się ze zdefiniowanego katalogu głównego dokumentu).