图片授权基于 www.pixabay.com 相关协议
HTTP 协议的数据传输与 TCP 类似,也是需要在真实数据之前添加上一些信息,不过,HTTP 协议添加的信息是 ASCII 码的文本,肉眼可见。
请求方发送的报文叫:请求头,响应方回复的报文叫:响应头。
请求报文和响应报文的基本结构由三部分构成:
在头部字段和消息正文之间存在一个空行(CRLF),以区分 body 体,如图:
看一下实际抓包结果:
请求头的「起始行」由三部分构成:
GET / HTTP/1.1
在 Chrome 浏览器中 Request Headers 就是请求头,Response Headers 就是响应头。
响应头「起始行」也分三部分构成:
HTTP/1.1 200 OK
请求头和响应头的「起始行」介绍完后,剩下的就是「头部字段」了。
有些字段在请求头和响应头中都可以出现,有些只存在请求头,有些只存在响应头。
Accept:请求头字段,客户端能够接收的数据类型;
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Host:请求头字段,表示浏览器想请求的主机,如果一台服务器上有多个主机,那就需要服务器用 Host 去匹配;
Host: www.weibo.com
Accept-encoding:请求头字段,客户端能够接收的服务器压缩的方式;
Accept-encoding: gzip, deflate, br
User-Agent:请求头字段,客户端标识当前的客户端版本号;
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36
Date:响应头字段,标识报文创建的时间;
Date: Thu, 05 Mar 2020 00:35:27 GMT
Content-length:响应头字段,返回的内容长度;
Content-length: 62590
Content-type:响应头字段,返回的内容格式;
Content-type: text/html; charset=UTF-8
Set-cookie:响应头字段,设置客户端的标识;
Set-cookie: NID=199=G9qwSJKCilfBYphYAPaflBKJzEIS1G9nwzWraiHF7aiL106uP6znIbjw6THT9Q68qACEyg1OzhoYOI7GMyEVDpZNQ4bOtlHY5jsSHtkeZ5uorUTiYYrA5ybMzv172ZH-0rmkY8d7jrw_iGp5swz9kJtFbrHR24EMmLgj43j4P8RdCpBwvc5pFVvTA_J4Llj3iPZoqBCZshpP_uTqfE4On8n-OPbcO_QBxjbUVS6yDLTkwlqXMnuJOC8tVQQxnbyE3z2K_aTnMe6L_Vvr4gJjI47a; expires=Fri, 04-Sep-2020 00:35:27 GMT; path=/; domain=.google.com.hk; Secure; HttpOnly; SameSite=none
上面罗列了一些 key:value 键值对,下面以对话的形式简单来罗列请求方和响应方的沟通:
客户端说:
服务器说:
HTTP 协议在「负载均衡」中,它既是请求方又是响应方,靠协议来去请求服务器和响应客户端。
内容和图片来源于:极客时间《透视 HTTP 协议》
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34524.html