【超全汇总】HTTP协议

之前学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.youkuaiyun.com,注意这里使用的是HTTP协议,但是最终访问的却是https://www.youkuaiyun.com,这就叫重定向,这个重定向可以由你来进行规定。

说完了请求行,我们现在来说一下,头部信息

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,叫做缓冲区的概念,这个存在,那们一定有上游和下游的概念,上游先预先存放着一些东西,如果下游需要使用的话,那么就会调出来这个缓存


好了今天的分享就到此结束了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值