文章目录
HTTP首部
HTTP首部已请求为例包括请求行、请求头、请求体
4种HTTP头部(请求头)类型
通用首部类型
请求和响应两方都会使用的
字段
Cache-Control
缓存请求指令
缓存响应指令
常用指令解释
- no-cache: 浏览器和缓存服务器都不应该缓存页面信息;
- public: 浏览器和缓存服务器都可以缓存页面信息;
- no-store: 请求和响应的信息都不应该被存储在对方的磁盘系统中;
- must-revalidate: 对于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时
Connection
Connection具备如下两个作用:1、控制不再转发给代理的首部字段,2、管理持久连接
- 控制不再转发给代理的首部字段:Connection:不再转发的首部字段名 此首部字段名必须是
逐跳的首部字段
- 管理持久连接:Connection:Keep-Alive ,HTTP1.1版本的默认连接都是持久连接。为此,客户端会在持久连接上连续发送请求。当服务器端想要明确断开连接时,则指定Connection首部字段值为Close
请求首部类型
从客户端向服务器端发送请求报文时使用的首部,补充了请求的附加内容、客户端信息、响应内容优先级等信息
字段
- User-Agent:请求的浏览器和用户代理名称等消息传达给服务器,如果请求经过代理,那么中间也很可能被添加上代理服务器的名称。
响应首部类型
从服务器端想客户端返回响应报文时使用的首部,补充了响应的附加内容,也会要求客户端附加额外的内容信息。
字段
实体首部类型
增对请求报文和响应报文的实体部分使用的首部,补充了资源内容更新时间等与实体有关的信息
字段
Content-Type的值
图中的斜杠/是父子级关系,如text/html则表示text包括html,是html的父级,如果需要支持多个要用逗号分割如text/html,application/xml,也可以添加charset参数,需要用分号隔开
,如
Content-Type:text/html,application/xml;charset=utf-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》