之前学http协议的时候,云里雾里的,再次学了之后,感觉理解的比以前透彻了,所以今天就来总结一下,因为我也是小白~ 如有错误,那么希望指正
请求与响应
当我们在浏览器的地址栏中输入一个网址之后,然后出现一个网页,
这其中的原理应该是这样的:浏览器,也就是客户端向服务器发送请求,然后服务器进行处理请求,然后返回请求。
浏览器发送请求的这个过程就叫做请求,而服务器处理请求,返回请求的过程就叫做响应。
在请求和响应的过程中,双方都会遵守一个约定,这个约定就是HTTP协议
HTTP协议有很多个版本,但是现在使用最多的版本是HTTP/1.1
HTTP请求
在浏览器的导航栏中输入下面这个地址
http://xxx.com/uesrs?gender=male
http
叫做协议类型,xxx.com
叫做服务器地址,uesers?gender= male
叫做请求路径
这段网址在http请求中是这样的
GET usrs?gender-male HTTP/1.1
HOST:xxx.com
Content-Type: text/plain
Content-Length: 243
http请求的格式
请求(的)行
头信息
----这是空行
主体信息
GET是HTTP请求的方法,用来获取资源,但是这种请求没有主体信息,除了GET这种请求方式还有
POST,PUT, HEAD ,DELETE
POST和PUT请求方法有主体信息,而HEAD请求方法和GET请求是基本相同的
DELETE主要是用来删除资源
PUT主要用于增加或者修改资源,而PUT主要用于修改资源,这两个没啥区别,
PUT还有一个性质叫做幂等性质,幂等这个性质的意思是就是数据不会重复增加
HTTP响应
HTTP/1.1 200 OK
content-type: application/json; charset=utf-8
cache-control: public, max-age=60, s-maxage = 60
vary: Accept, Accept-Encoding
etag:...
content-encoding...
响应的状态码:
1xx
: 临时性信息,
2xx
: 表示成功
3xx
: 重定向
4xx
: 客户端错误
5xx
: 服务器错误
100表示继续发送,101表示正在切换协议, 200表示成功,201创建成功,201创建成功,301永久移动,302暂时移动, 304内容未改变
这里的重定向, 指的是如果你在浏览器的地址栏中输入一个地址,比如http://www.csdn.net
,注意这里使用的是HTTP协议,但是最终访问的却是https://www.csdn.net
,这就叫重定向,这个重定向可以由你来进行规定。
说完了请求行,我们现在来说一下,头部信息
Headers区域
作用:HTTP消息的元数据,元数据就是数据中包含数据,可以将这个理解为你传输的数据的属性
HOST的理解
HOST叫做目标主机地址,你的主机可能有多个子主机,请求开始之前进行DNS查询,将域名转化为IP
地址,然后发送到HOST, 主机接收后观察HOST,去定位子主机,最终定位到子主机
Content-Type 和Content-Length
Content-Length表示报文长度,服务器接收的数据有多种类型,这个content-length就是一个标志,相当于一个换行符号,标志着结束,服务器根据报文长度进行接收。
下面说一下Content-Type,Content-Type表示的是返回数据的格式,返回数据的格式主要有以下几种
Text/HTML形式:就是单纯的HTML格式
http/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 853
普通表单形式
普通表单主要是用户进行提交信息,其格式为x-www-form-urlencoded
特殊表单
用户可能不仅仅是提交个人信息,还有可能提交文件,比如说提交头像,这个时候就使用这个特殊表单,既然不只是信息,还有文件,文件和信息使用boundary
进行分隔
multipart/form-data; boundary....
使用multipart
进行传用于传输二进制内容的多项内容,不要使用其它的,这样显得没文化。
json格式
用于web api的响应式或者POST/PUT
请求
{"name":"xxxx", "gender", "male"}
图片格式
image/jpeg/application
,这种方式非常的好,但是这种方式使用的很少,因为大多数人使用的是multipart
,虽然这种
推荐使用json这种格式,这种格式的扩展性更好
chunked transter encoding
分块传输,使传输的延迟降低,使用分块传输的时候,我们要记住不可以使用Content-Length
它的body格式为
length1
data1>
<length2
data2
用户代理
user-agent
用户代理指的就是浏览器客户端,浏览器都是兼容mozilla
的, 根据user-agent
信息进行返回,有可能用户是pc端,还有可能是移动端。
Range
指定Body的内容范围,进行加载内容,如加载图片,可能只会加载多少,
部分其它header
accept
:客户端能够接收的数据类型: text/html
accept-Charset
:客户端接受的字符集合utf-8
Accept-Encoding
:客户段接收的压缩编码类型, 如gizp
Content-Encooding
压缩类型,如g-zip
Cache
cache
是缓存的意思,也就是提前存下来,以便后序的使用
与这个概念相仿的是buffer
,叫做缓冲区的概念,这个存在,那们一定有上游和下游的概念,上游先预先存放着一些东西,如果下游需要使用的话,那么就会调出来这个缓存
好了今天的分享就到此结束了~