很多开发者天天跟http打交道,却不知道http报文长什么样子,结构是怎么样的,是时候普及一下了。用于 HTTP 协议交互的信息被称为 HTTP 报文,请求端(客户端)的 HTTP 报文叫做请求报文;响应端(服务器端)的叫做响应报文,HTTP 报文本身是由多行数据构成的字符串文本。
HTTP 请求报文结构:
HTTP 报文大致可分为请求行、请求头、空行、请求主体四部分。也有人将报文分为请求首部(请求行+请求头)、空行、请求主体。通常,前几部分是必有的,最后的请求体不是必有的,每个部分结尾都用空行来作为结束标志。
请求行:请求方法(Method) + 空格 + 统一资源标识符(URI) + 空格 + HTTP版本 + CR LF ;
请求头:字段名 + 冒号 + 值 + CR LF ;
空行: 回车符(CR)+ 换行符(LF) ;
请求体: 由用户自定义添加,如post的body等;
请求首部实例(谷歌浏览器Network面板):
HTTP 响应报文结构:
响应报文结构与请求报文结构唯一的区别在于第一行中用状态信息代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况。
状态行:HTTP版本 + 空格 + 状态码 + 空格 + 状态码描述 + CR LF ;
响应头:字段名 + 冒号 + 值 + CR LF ;
空行: 回车符(CR)+ 换行符(LF) ;
响应体: 由用户自定义添加,如post的body等;
响应首部实例(谷歌浏览器Network面板):
响应状态码:
状态代码由服务器发出,以响应客户端对服务器的请求。
1xx(信息):收到请求,继续处理
2xx(成功):请求已成功接收,理解和接受
3xx(重定向):需要采取进一步措施才能完成请求
4xx(客户端错误):请求包含错误的语法或无法满足
5xx(服务器错误):服务器无法满足明显有效的请求
状态码详情请查阅:https://en.wikipedia.org/wiki...
本文到此应该结束了,但是程序员本该严谨治学,根据《图解Http》一书,http请求报文首部中的字段还可以细分为通用首部字段、实体首部字段、请求首部字段,同样,http响应报文首部中的字段还可以细分为通用首部字段、实体首部字段、响应首部字段
谷歌浏览器的Newwork面板只会把通用首部字段分出来,剩下的字段按请求头字段和响应头字段分成两类,不再做细分
附一张字段分类详情图
看不清楚的可以点这里:https://www.processon.com/vie...
<完>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。