1.基本概念
参考:https://www.cnblogs.com/yumo1627129/p/7941220.html
(http当初是为了传输html而产生的)
浏览器把url拆分成报文
其中host 地址是给主机看的
请求报文

“消息头/消息体”的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方怎么干。HTTP协议传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,消息体是可选的,而消息头是必须的。
响应报文
http的请求方法
(body实际上是提供给服务器,让服务器去使用与操作的数据包)
get delete(规范下请求报文是不存在body的)
GET POST PUT DELETE HEAD
get put delete都是具有幂等性的,就是多次请求同一个数据,不会累加,但是post是非幂等的,在添加一个数据的时候,多次请求,最终结果会是请求次数的数据(添加一个数据,十次,结果添加了十条数据)
1.get
GET方法提交的数据是作为URL请求的一部分所以提交的数据量不能太大。这是因为浏览器对url的长度有限制,而且存在安全隐患
2.post
POST方法是GET方法的一个替代方法,它主要是向Web服务器提交表单数据,尤其是大批量的数据。
**别:
1、 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放在HTTP包的body中。
2、 GET方式提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST则没有此限制。
3、安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。
4.、服务器取值方式不一样。GET方式取值,如php可以使用$_GET来取得变量的值,而POST方式通过$_POST来获取变量的值

HEAD方法与get相同,但是head方法的返回报文中没有body的
我的理解中head可以先提前请求一下get需要请求的地址,获取一些信息(因为不返回body所以比get请求要快)
因为方法几乎是相同的,它们的区别在于 HEAD 方法只是请求消息报头,而不是完整的内容。对于 HEAD 请求的回应部分来说,它的 HTTP 头部中包含的信息与通过 GET 请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到 Request-URI 所标识的资源的信息。这个方法通常被用于测试超链接的有效性,是否可以访问,以及最近是否更新。
状态码
2.http的HEAD与body
HEAD实际上就是http的返回消息的元数据(整这些名词,我的理解就是HEAD就是http的属性数据)
1.host
实际上在请求前最先开始的是host ,host里面传给主机的,在主机中查找服务器
(一台主机中可以提供多个服务器,可以想像一个电脑里跑了多个服务)
2.content-length与content-type
实际上就是body的length与type,那么这里的length的作用是为了保证数据是否传输完整,是否被中间截断了(如果不存在length这个属性,那么可能判断数据是否完整需要找换行符,但是在二进制数据中就没办法找到换行符了,所以用length属性判断最nice)
content-type 不同的页面浏览器会选择不同的方式解析出来不同格式
3.其他参数:

