请求的组成
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 要求的行结束符,重复一次表示空行。
挑战
困难完全不用 curl,自己发送 HTTP 请求。
- 创建包含
raw的index.html - 在端口 9110 上提供文件夹服务
- 通过
nc发送原始的GET /index.html HTTP/1.0请求,并只打印响应内容的第一行
第一行是服务器的状态行。预期输出:
HTTP/1.0 200 OK记得加上空行:
printf 'GET /index.html HTTP/1.0\r\n\r\n'。
亲手试试
终端
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
使用终端进行网络通信中的所有课
自己练习: Terminal 在线编辑器