4

Я пытаюсь использовать tcpserver из ucspi-tcp, чтобы запустить скрипт, который возвращает простую веб-страницу. Мой скрипт (hello.lua) выглядит следующим образом:

#!/usr/bin/env lua
print([[HTTP/1.1 200 OK
Content-Type: text/html
<html>
<head>
<title>My title</title>
</head>
<body>
<h1>Hello in big font</h1>
</body>
</html>]])

Я запускаю его с помощью tcpserver -v -rh 0 9000 /path/to/hello.lua

Когда я использую tcpcat myserver 9000 , я получаю ожидаемый доход:
HTTP/1.1 200 OK
Content-Type: text/html
<html>
<head>
<title>My title</title>
</head>
<body>
<h1> Hello in big font</h1>
</body>
</html>

Однако, когда я пытаюсь использовать веб- браузер и указываю на http:\\myserver:9000 , я получаю ошибку браузера (в Chrome) Error 101 (net::ERR_CONNECTION_RESET): Unknown error , даже если в журнале tcpserver показана транзакция:
tcpserver: status 1/40
tcpserver: pid 21672 from <ip address of browser>
tcpserver: ok 21672 <server hostname>::::ffff:<server ip>:9000 <client hostname>::::ffff:<client ip>::3133
tcpserver: end 21672 status 0

Я знаю, что мне здесь не хватает чего-то простого, но я не могу собрать кусочки головоломки вместе. Любое понимание приветствуется! Спасибо!

2 ответа2

5

Вам нужна пустая строка между заголовками и содержимым:

HTTP/1.1 200 OK
Content-Type: text/html

<html>
<head>
<title>My title</title>
</head>
<body>
<h1>Hello in big font</h1>
</body>
</html>
4

RFC2616 указывает, что строка состояния и строки заголовка ответа HTTP должны заканчиваться символом CRLF. Если вы написали свой скрипт lua на компьютере, отличном от Windows, то, скорее всего, у вас нет подходящих терминаторов строки CRLF. Также вам нужно отделить заголовки сообщений от тела пустой строкой (сам по себе CRLF).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .