Я читаю Land of Lisp (ему 10 лет, но и clisp тоже, так что он кажется достаточно современным). Я на главе 13, где вы пишете веб-сервер. Он просто открывает клиентский сокет как стандартный вывод, а затем использует princ
и format t
для записи клиенту. Полный исходный код веб-сервера находится по адресу http://landoflisp.com/webserver.lisp.
У меня такая же проблема как с моим введенным кодом, так и с загрузкой webserver.lisp с веб-сайта и его запуском. Когда я захожу на сайт в Chrome, я получаю ERR_INVALID_HTTP_RESPONSE. В Safari я не могу открыть страницу. Когда я пытаюсь перейти на сайт в Firefox, я получаю ожидаемую страницу, но все теги html просто отображаются как текст. Когда я пытаюсь взаимодействовать с сайтом в curl, я получаю закрывающий % на выходе, и я не уверен, откуда он взялся.
> curl http://localhost:8080/greeting
<html><form>What is your name?<input name='name' /></form></html>%
Я знаю, что это не лучший HTML, но он делает то же самое, если я добавляю теги body и объявляю doctype html в начале. % в ответе curl нет в princ
, и я получаю %, когда пытаюсь перейти к другому URL-адресу для сервера, например localhost:8080 или localhost:8080/greeting?name=Lewis.
На самом деле я не планирую использовать этот веб-сервер для чего-либо, но остальная часть книги, похоже, посвящена созданию приложения, которое его использует, и я хотел бы закончить книгу, поэтому было бы неплохо, если бы я мог по крайней мере, заставить веб-сервер работать хотя бы с одним браузером.