Menu
CoddyTech

请求的组成

Coddy 使用终端进行网络通信 课程的第 20 课,共 47 课。

在 curl 的底层,HTTP 请求是通过套接字发送的纯文本。它以一行开头,说明你想要什么:

GET /index.html HTTP/1.1

分为三部分:方法(操作类型)、路径(目标内容)和版本。之后是请求头,每行一个,然后是一个空行,最后是可选的请求体。

空行不是装饰。服务器通过它知道请求头已结束,并且正文(如果有)开始了。没有空行的请求会一直挂起,因为服务器仍在等待后续内容。

你可以手动发送空行。nc 会打开一个原始连接,你输入的内容会直接通过网络发送:

printf 'GET / HTTP/1.0\r\n\r\n' | nc 127.0.0.1 9110

\r\n 是 HTTP 要求的行结束符,重复一次表示空行。

challenge icon

挑战

困难

完全不用 curl,自己发送 HTTP 请求。

  1. 创建包含 raw 的 index.html
  2. 在端口 9110 上提供文件夹服务
  3. 通过 nc 发送原始的 GET /index.html HTTP/1.0 请求,并只打印响应内容的第一行

第一行是服务器的状态行。预期输出:

HTTP/1.0 200 OK

记得加上空行:printf 'GET /index.html HTTP/1.0\r\n\r\n'。

亲手试试

终端
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

使用终端进行网络通信中的所有课

自己练习: Terminal 在线编辑器