web 性能优化基础篇之 HTTP

259 阅读2分钟

这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战

HTTP

HTTP(Hyper Text Transfer Protocol) 超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。

HTTP请求

一个HTTP请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。

image.png

请求行

  • 动词
    • GET:从服务器取出资源(单个或多个)。
    • POST:在服务器新建资源。
    • PUT:在服务器更新资源(客户端提供改变后的完整资源)。
    • PATCH:在服务器更新(更新)资源(客户端提供改变的属性,比如说某个字段+1)。
    • DELETE:从服务器删除资源。
    • HEAD:获取资源的元数据。
    • OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
  • 空格
  • URL
    • 一搬以/开头,比如/index.html
    • 如果有参数则使用?拼接,更多以&拼接,比如 /index.html?a=1&b=2
    • URL不支持锚点,若有锚点会自动删除
  • 空格
  • 协议版本:HTTP/主版本号.次版本号,比如 HTTP/1.0HTTP/1.1

请求头

  • Accept:客户端希望得到的内容格式
  • Host:客户端请求的域名
  • Connection:与连接相关的属性
  • Content-type:表示请求数据希望的格式,此处希望是 Application/json

空行

第三部分固定是 \r\n 回车换行,固定死的。

请求数据

此部分数据格式跟请求头中设置的格式要保持一致。

注意:③④部分是可选的

HTTP响应

HTTP响应报文由状态行(status line)、响应头部(headers)、空行(blank line)和响应数据(response body)4个部分组成。

image.png

状态行

  • 协议版本: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 决定。

最后说一句

如果这篇文章对您有所帮助,或者有所启发的话,帮忙关注一下,您的支持是我坚持写作最大的动力,多谢支持。