超文本传输协议(Hypertext Transfer Protocol,HTTP)是一种在互联网上收发资源的网络协议,用于传输图像、HTML文档和JSON等。
1. 理解HTTP
要理解HTTP请求的结构,一种不错的方式是使用curl.它在开发HTTP客户端时很有用。通过下面的命令获取了Google主页,但请不要过度关注这个命令及其语法。这里应关注的是HTTP请求的结构。
[root@localhost ~]# curl -s -o /dev/null -v http://www.baidu.com
* Trying 110.242.68.3:80...
* Connected to www.baidu.com (110.242.68.3) port 80 (#0)
> GET / HTTP/1.1
> Host: www.baidu.com
> User-Agent: curl/7.69.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: keep-alive
< Content-Length: 2381
< Content-Type: text/html
< Date: Fri, 10 May 2024 09:33:38 GMT
< Etag: "588604c1-94d"
< Last-Modified: Mon, 23 Jan 2017 13:27:29 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
{ [1052 bytes data]
* Connection #0 to host www.baidu.com left intact
这个在verbose模式下的 curl 描述了服务器和客户端之间传输的多个请求响应。其中的日志详细说明了发出的请求和收到的响应,对其解读如下。
- 以字符 > 打头的行描述了客户端发出的请求
- 以字符 < 打头的行描述收到的响应
- 请求的详细信息描述了随请求发送的一些报头,这些报头向服务器提供了一些有关客户端的信息
- 响应详细描述了一些报头,这些报头指出