最少的 HTTP 服务器回复

Seb*_*eyn 10 webserver http

我正在尝试使用 AVR + ESP8266 构建一个 HTTP 服务器。

我可以通过 telnet 来回发送命令,但现在我想实现一个 Web 界面。

作为起点,我尝试设置一个输出“文本”的网站,但是浏览器显示一个空页面。有人可以告诉我将页面解释为 HTML 的最低要求吗?

telnet 192.168.2.26 81
Trying 192.168.2.26...
Connected to 192.168.2.26.
Escape character is '^]'.

GET / HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

AVR 答案:

HTTP/1.1 200 OK
Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Zeitschaltuhr</title></head>
<body>
Text
</body></html>
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

Zib*_*bri 13

最小 HTTP 响应:

HTTP/1.1 404 
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

最少的内容响应:

HTTP/1.1 200 OK
Content-Length: 12
Content-Type: text/plain; charset=utf-8

Hello World!
Run Code Online (Sandbox Code Playgroud)

它对您不起作用的原因是您忘记了Content-Length:标头。

  • 为什么长度是 13 而不是 12?到底有新线吗? (3认同)
  • 实际上,如果您使用程序并可以控制终止连接,并且您通过 Chrome 浏览器客户端进行连接,则不需要指定长度。一般来说,在连接 Chrome 浏览器时,您不需要指定 Content-Type,尽管指定两者可能是一个好习惯。 (2认同)

sda*_*bet 2

您的 HTTP 响应缺少响应标头字段和消息正文之间的空行(如此处所述

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

<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Zeitschaltuhr</title></head>
<body>
Text
</body></html>
Run Code Online (Sandbox Code Playgroud)