HTTP协议详解

文章目录

  • HTTP首部
    • 4种HTTP头部(请求头)类型
      • 通用首部类型
      • 请求首部类型
      • 响应首部类型
      • 实体首部类型
        • Content-Type的值
    • 端口端首部和逐跳首部
      • 端到端首部
      • 逐跳首部
  • 请求方法
    • GET请求
    • POST请求

HTTP首部

HTTP首部已请求为例包括请求行、请求头、请求体
HTTP协议详解_第1张图片

4种HTTP头部(请求头)类型

通用首部类型

请求和响应两方都会使用的
字段
HTTP协议详解_第2张图片
Cache-Control
缓存请求指令
HTTP协议详解_第3张图片
缓存响应指令
HTTP协议详解_第4张图片
常用指令解释

  • no-cache: 浏览器和缓存服务器都不应该缓存页面信息;
  • public: 浏览器和缓存服务器都可以缓存页面信息;
  • no-store: 请求和响应的信息都不应该被存储在对方的磁盘系统中;
  • must-revalidate: 对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时

Connection
Connection具备如下两个作用:1、控制不再转发给代理的首部字段,2、管理持久连接

  • 控制不再转发给代理的首部字段:Connection:不再转发的首部字段名 此首部字段名必须是逐跳的首部字段
  • 管理持久连接:Connection:Keep-Alive ,HTTP1.1版本的默认连接都是持久连接。为此,客户端会在持久连接上连续发送请求。当服务器端想要明确断开连接时,则指定Connection首部字段值为Close

请求首部类型

从客户端向服务器端发送请求报文时使用的首部,补充了请求的附加内容、客户端信息、响应内容优先级等信息
字段
HTTP协议详解_第5张图片

  • User-Agent:请求的浏览器和用户代理名称等消息传达给服务器,如果请求经过代理,那么中间也很可能被添加上代理服务器的名称。

响应首部类型

从服务器端想客户端返回响应报文时使用的首部,补充了响应的附加内容,也会要求客户端附加额外的内容信息。
字段
HTTP协议详解_第6张图片

实体首部类型

增对请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息
字段
HTTP协议详解_第7张图片

Content-Type的值

图中的斜杠/是父子级关系,如text/html则表示text包括html,是html的父级,如果需要支持多个要用逗号分割如text/html,application/xml,也可以添加charset参数,需要用分号隔开,如
Content-Type:text/html,application/xml;charset=utf-8
HTTP协议详解_第8张图片
不同的Content-Type的值spring接收方式参考:https://blog.csdn.net/weixin_43790613/article/details/117164515

端口端首部和逐跳首部

端到端首部

分在此类中的首部会转发给请求/响应对应的最终接受目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发

逐跳首部

分在此类中的首部只对单次转发有效,会因通过缓存代理而不再转发,HTTP/1.1和之后的版本中,如果要使用逐跳首部,需要提供Connection首部字段。
下面列举了HTTP/1.1中的逐跳首部字段。除这8个首部字段之外,其他所有字段都属于端到端首部

  • Connection
  • Keep-Alive
  • Proxy-Authenticate
  • Proxy-Authorization
  • Trailer
  • TE
  • Transfer-Encoding
  • Upgrade

请求方法

GET请求

当客户端要从服务器上读取文档,点开某个链接,或者是通过浏览器上输入网址来浏览网页的时候,使用的都是GET方法.GET方法请求参数和对应的值附加在URL后面,利用一个?代表URL的结尾以及附带参数的开始,参数用key=value键值对的方式书写,参数和参数之间用&符号隔开.一般GET请求的参数的大小受限,最大不超过1024.由于参数明文的显示在了URL上面,因此不太适合传递私密的数据.

POST请求

POST方法将请求的参数封装在了HTTP请求的请求体中,以名称/值的形式出现,可以传输大量的数据.POST请求一般用于表单数据的提交中.

从本质上来说,GET和POST都是TCP连接,并无实质的区别.但是由于HTTP/浏览器的限定,导致它们在应用过程中体现出了一些不同.GET产生一个数据包,POST产生两个数据包.对于GET请求,浏览器会把http header 和 data 一并发出去,服务器响应200(返回数据).而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok

参考:https://www.jianshu.com/p/7c8b4576e4bb
《图解HTTP》

你可能感兴趣的:(网络通信,http,网络协议,网络)