这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战。
HTTP
HTTP(Hyper Text Transfer Protocol) 超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。
HTTP请求
一个HTTP请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。
请求行
- 动词
- GET:从服务器取出资源(单个或多个)。
- POST:在服务器新建资源。
- PUT:在服务器更新资源(客户端提供改变后的完整资源)。
- PATCH:在服务器更新(更新)资源(客户端提供改变的属性,比如说某个字段+1)。
- DELETE:从服务器删除资源。
- HEAD:获取资源的元数据。
- OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
- 空格
- URL
- 一搬以/开头,比如
/index.html
- 如果有参数则使用?拼接,更多以&拼接,比如
/index.html?a=1&b=2
- URL不支持锚点,若有锚点会自动删除
- 一搬以/开头,比如
- 空格
- 协议版本:HTTP/主版本号.次版本号,比如
HTTP/1.0
或HTTP/1.1
请求头
- Accept:客户端希望得到的内容格式
- Host:客户端请求的域名
- Connection:与连接相关的属性
- Content-type:表示请求数据希望的格式,此处希望是 Application/json
空行
第三部分固定是 \r\n 回车换行,固定死的。
请求数据
此部分数据格式跟请求头中设置的格式要保持一致。
注意:③④部分是可选的
HTTP响应
HTTP响应报文由状态行(status line)、响应头部(headers)、空行(blank line)和响应数据(response body)4个部分组成。
状态行
- 协议版本:
HTTP/1.0
,此处的协议版本号通常跟请求中的一致,但是也可能有不一致的情况。 - 空格
- 状态码
- 1**,信息,服务器收到请求,需要请求者继续执行操作
- 2**,成功,操作被成功接收并处理
- 3**,重定向,需要进一步的操作以完成请求
- 4**,客户端错误,请求包含语法错误或无法完成请求
- 5**,服务器错误,服务器在处理请求的过程中发生了错误
- 空格
- 状态码描述
- OK 200
- Not Found 404
- Bad Gateway 502
- Internal Server Error 500
响应头
- Content-type:表示第四部分的语法
- Set-cookie:服务器给客户端种的cookie
- Connection:与连接相关的属性
- Content-Encoding:响应使用的数据压缩格式
空行
第三部分固定是 \r\n 回车换行,固定死的
响应数据
返回给客户端的相关数据,格式由响应头中的 Content-type 决定。
最后说一句
如果这篇文章对您有所帮助,或者有所启发的话,帮忙关注一下,您的支持是我坚持写作最大的动力,多谢支持。