赞
踩
HTTP协议是一个使用较多的应用层协议,它是一个请求/响应式的一个协议,就是我客户端给你发一个请求,你客户端需要返回给我一样响应。首先我们来看一下HTTP协议的请求格式。
HTTP请求格式:
HTTP请求格式由三部分组成:1首行 2.请求头 3.正文(body)。
1.首行:我们利用抓包工具或者开发者工具看看首行包含了什么信息。
这是我们访问必应搜索所产生的一个请求,我们首先能看到一个GET方法,这是HTTP的"方法",之后我们会进行介绍。然后我们看到的是一个URL,然后一个我们的HTTP的版本号。
这里通过这样的GET方法来获取到我们这个URL中的资源。
然后我们来看首行中的URL的构成
这里我们随便哪一个URL来进行分析:
首先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 不能被缓存. (这一点也是承接幂等性)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。