Hypertext Transfer Protocol 超文本传输协议,用于浏览器和服务器之间传输信息的协议。
请求报文结构
请求报文就是浏览器传输到服务器的报文,包括请求行,请求头和请求体,其中请求头和请求体之间一般会隔一个空行。
请求行
请求行包括请求方法,url以及HTTP版本号。
请求方法
最主要是GET请求和POST请求。GET请求用于获取数据,POST请求用于提交数据。此外还有PUT,DELETE等请求方法。
GET请求参数是通过URL进行传递的,POST请求的参数包含在请求体当中;GET请求在url中传递的参数是有长度限制的,POST对长度没有限制。
url
url用于定位服务器的资源,也就是我们常见的网址,以我们主机为例:
http://127.0.0.1:9000/search?a=1&b=2
https后的 :// 是协议的固定组成部分;127.0.0.1是服务器主机名,一般是域名(baidu.com)或IP地址(127.0.0.1);/search是资源的路径,定位服务器主机的某一个资源;?a=1&b=2为字符串,向服务器传递某些参数。一般是键名键值对组合,&连接。
请求头
由一系列键名键值对组成,主要记录了浏览器的一些相关信息、交互行为。目前只知道格式就可以了,例如:
connection:保持连接通道
user-agent:浏览器的平台版本号
accept:浏览器能处理的数据类型
accept-encoding:浏览器支持压缩方式
language:支持语言
请求体
请求体的格式非常灵活,可以设置为任何内容,JSON格式很常见。
响应报文结构
响应报文是服务器传输到浏览器的报文,也包括响应行,响应头和响应体,其中响应头和响应体之间一般会隔一个空行。
响应行
响应行包括http版本号、响应状态码、以及响应状态的描述。
响应状态码以及对应描述
200 请求成功 OK
403 禁止请求 Forbidden
404 找不到资源 Not Found
500 服务器内部错误 Internal Server Error
此外,1xx--信息相应;2xx--成功响应;3xx--重定向消息;4xx--客户端错误;5xx--服务端错误。
响应头
记录了服务器和响应体的一些相关信息,例如:
content-type:声明响应体对应的格式
content-length:响应体的长度
在mdn文档中查不到的响应头都是自定义响应头
响应体
响应体的格式也非常灵活,啥都行,常见的有:HTML,CSS,JS,JSON,媒体等。