检查:HTTP 与诊断顺序
我用nc写了一个请求,但是服务器没有响应,一直等待。最常见的原因是什么?
- 通过省略标头后面的空行,服务器知道即将到来更多标头。
- HTTP/1.0 被编写而不是 HTTP/1.1
- 由于 Host 标头的值与服务器地址不同而被拒绝。
- 请求行中的路径没有以斜线开头
为什么 HTTP/1.1 中需要Host标头?
- 服务器需要知道将响应发送到的地址。
- 尝试更新服务器端的 DNS 缓存
- 代理正在尝试决定是否压缩请求。
- 由于一台服务器(一个IP)接收多个站点,因此您必须选择它是哪个站点。
curl收到404。这清楚地说明了什么?
- DNS 错误并且到达了错误的服务器。
- TCP 连接和 HTTP 请求/响应均成功,并且该路径中没有资源。
- 防火墙截断了一些响应
- 服务器进程终止,内核做出响应。
当请求一个不带斜杠的目录(如/docs)时,python http.server 的响应是什么?
- 404 — 不是文件
- 200 — 按原样显示目录列表。
- 301 和
Location: /docs/— 转到斜杠所在的位置 - 403 — 目录访问被禁止
ping 结果“ping 正常,但网络打不开”说明什么?
-
服务器上的 Web 进程处于活动状态并正在监听。
-
ICMP经过的链路、地址、路径等各层均正常。
-
名称(getent)→路径(ip Route get)→端口(ss)→防火墙(计数器)→响应(curl -v)
-
重新启动服务器(http.server),如果不起作用,请重新启动路由器(ip_forward)。