参考:网络编程知识预备(4) ——了解应用层的HTTP协议与HTTPS协议_行稳方能走远的博客-CSDN博客
Http协议之详解 - 谢呈勖 - 博客园 (cnblogs.com)
目录
一、HTTP协议
重点了解GET请求和POST请求,以及他们的区别。
1、http协议的特性
http协议是建立在TCP/IP协议之上应用层协议,默认端口为80或者8080
http协议的的特点是无状态,短连接
2、http协议的请求
利用抓包工具httpwatch可以获取报文,多见于前端,后端用于分析数据传输过程中产生的问题
http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分:
-
请求行
浏览器向服务器发送的,在第一行,包含:
- 请求方式(GET请求、POST请求)
- url(网址)
- http协议版本
GET请求
例如:
请求方式是GET请求,url 携带的参数可见,http协议版本是1.1
POST 请求(人脸识别方案)
例如:
请求方式为POST请求,url携带的参数不可见,协议版本是1.1
两个请求的区别
本质区别:
GET产生一个TCP数据包;POST产生两个TCP数据包。
- 对于GET方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应200(返回数据);
- 对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送 data,服务器响应200 ok(返回数据)。
200是什么意思,总结起来一句话,以2开头的为成功,以4开头的多为失败,如常见的404.
详情跳转:
http协议中各个响应状态200_301_404_500等返回值含义快速一览 - 测试那点事儿_TestYao - 博客园 (cnblogs.com)
还有:
(1)url 携带的参数是否可见:
get,url 携带的参数可见
例如:
var url = 'http://192.168.1.40:8080/v1/sea?page=1&per_page=10' + 'search=' + escape(str)
参数用 & 符号进行连接,被当做参数的分隔符来进行处理。上面就两个参数。page=1,per_page=10
post,url 携带的参数不可见
有参数,但被隐藏起来了,可以通过抓包查看这个参数。
(2)参数传递方式
get,通过请求行拼接url进行传递参数
post,通过请求主体传输参数
(3)缓存性
get 请求是可以缓存的
post 请求不可以缓存
(4)页面后退的反应
get 请求页面后退时,不产生影响(因为有缓存)
post 请求页面后退时,会重新提交请求(没有缓存)