HTTP协议总结 | 青训营

108 阅读2分钟

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,媒体等。