Buradaki zorluk, GET isteklerini kabul eden bir kod golfü HTTP sunucusu yazmaktır. Açıkçası, tam özellikli olmak zorunda değildir, ancak bir dizinden dosya sunması gerekir.
Kurallar:
- HTTP sunucusu 36895 numaralı TCP bağlantı noktasını dinlemelidir (0x901F)
/var/www
* NIX sistemlerinde (örneğin Linux) veyaC:\hgolf
Windows'ta dosya sunmalıdır .GET
Kendisi dışında gelen tüm HTTP başlıklarını yok sayabilirsiniz .- HTTP yöntemi GET değilse, "405 Desteklenmeyen" durum kodunu ve "405 Desteklenmeyen" gövde kodunu geri göndermelisiniz.
- Dosya yoksa, "404 Dosya Bulunamadı" durum kodunu ve "404 Dosya Bulunamadı" ifadesini geri göndermelisiniz.
- Dosya varsa, ancak bir nedenden ötürü okunamadıysa, "500 Sunucu Hatası" durum kodunu ve "500 Sunucu Hatası" ifadesini geri göndermelisiniz.
- Kullanıcı isterse
/
veya mevcut başka bir dizin kökü isterse (örneğin/foo/
, bir dizininfoo
bulunduğu yer/var/www/
), boş bir sayfa ile yanıt verin. - Yanıtınız, içeriğin Firefox 8.0 ve Internet Explorer 8.0’da gösterilmesine izin vermek için en azından minimum başlıkları içermelidir.
- Sen ile cevap vermeliyiz
Content-Type
başlık seti, ancak yalnızca destek uzantıları varhtml => text/html
vetxt => text/plain
. Başka bir dosya uzantısı için,application/octet-stream
içerik türü olarak gönder . - Kodunuz hem ASCII hem de ikili verileri aktarabilmelidir, ancak ikisini birbirinden ayırt etmeniz gerekmez.
- 3. parti kütüphaneleri kullanamazsınız.
- HTTP isteklerini işlemek için tasarlanmış yerleşik sınıfları veya özellikleri kullanamazsınız (örneğin
HttpListener
, C #) - Kodunuz, kullandığınız soket API'leri nedeniyle yalnızca belirli bir işletim sisteminde çalışacaksa, lütfen bunu belirtin.
Çözümler, bir tarayıcıya HTML sayfası sunduğunu gösteren bir resim içermelidir.
Herhangi bir sorunuz varsa, lütfen sormaya çekinmeyin! :)
http
.js içindeki modül tamam mı?
..
, tanımlanan belge kökünden ayrılmanın bir yolu olarak yolda izin vermesini bekliyorum ).