HTTP协议的请求格式解析

HTTP协议是一个使用较多的应用层协议,它是一个请求/响应式的一个协议,就是我客户端给你发一个请求,你客户端需要返回给我一样响应。首先我们来看一下HTTP协议的请求格式。

HTTP请求格式:

HTTP请求格式由三部分组成:1首行  2.请求头  3.正文(body)。

1.首行:我们利用抓包工具或者开发者工具看看首行包含了什么信息。

 这是我们访问必应搜索所产生的一个请求,我们首先能看到一个GET方法,这是HTTP的"方法",之后我们会进行介绍。然后我们看到的是一个URL,然后一个我们的HTTP的版本号。

这里通过这样的GET方法来获取到我们这个URL中的资源。

然后我们来看首行中的URL的构成 

这里我们随便哪一个URL来进行分析:

https://cn.bing.com/search?q=quary+string&qs=n&form=QBRE&sp=-1&pq=quary+string&sc=9-12&sk=&cvid=54E37CEEC8C141BDBFF19F5420B60D7A&ghsh=0&ghacc=0&ghpl=

首先https代表我们协议的类型,这里的https和我们的http是一样的,只是https是安全的http。

然后我们能看到的cn.bing.com是服务器地址

这里我们没有端口号是因为我们的https默认端口号为443,所有不进行显示,然后我们http的端口号为80

search/代表我们要访问的一个资源路径

然后用?分割的是我们的quary string。quary string是我们程序员自定义的一个数据,它也是通过我们的Key_Value的形式进行存储,中间利用=进行分割

2.请求头:

 

第一行之后就是我们整个报文的请求头。请求头中都是我们的Key_Value的格式,这里用:进行分割,请求头中有一些Key我们可以稍微介绍一下例如:

Host表示服务器主机的地址和端口

Connection代表连接方式,keep-alive代表一个长连接

User-Agent表示浏览器/操作系统的属性

还有很多其他的请求头没有在图中展示。

3.正文(body):

这边我们的GET方法一般不包含body,如果我们想也可以做到,但是处于语义和大部分程序员的用法,我们GET方法的正文不包含这个正文内容。但是我们的POST一般都是包含正文的。

 这边我们能看到图中有个空行,这个空行表示我们的请求头结束了,之后用空行进行分隔,空行下面的内容就是我们正文的内容,正文里面的内容是由我们的程序员自定义的数据,所有正文中的格式没有固定的一种格式。

既然我们聊到了GET和POST方法。我们就来说一下GET方法和POST方法的一个区别:

首先GET方法能做的事情我们的POST方法也能做,所有说我们认为GET和POST没有本质的区别。但是从细节来看还是有去别的。

1.从语义上来看:GET代表获取而POST代表提交,所以GET一般用来获取到我们的数据,然后POST一般代表提交数据。

2.GET方法一般把自定义数据放在我们的quary string中,而我们的POST是把自定义数据放在正文(body)中。

3.GET方法是幂等的,而POST方法不是幂等的。什么是幂等?幂等就是我们随时随地什么时候去访问这个资源,返回的结果是相同的。不幂等就是我们下一次进行访问,我们获取的结果可能是不一样的。

4.GET 可以被缓存, POST 不能被缓存. (这一点也是承接幂等性)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值