get和post的区别让你有话可说

本文深入解析HTTP协议中的GET与POST请求方式的区别,包括数据包产生、请求参数限制、数据传递方式、URL可见性、缓存能力、传输数据量、安全性及回退页面反应。同时,阐述了它们基于TCP/IP协议的底层实现,以及HTTP作为行为准则的角色。

几个疑问?

要知道get和post的区别,首先要知道get和post是什么?

get和post是http协议的两种请求方式

那么http又是什么呢?

http是基于TCP/IP协议,数据能在万维网中通信的一种协议

也就是说http的底层是TCP/IP,那么get和post的底层也就是TCP/IP,也就是说get和post都是TCP链接。

举个例子:运送货物时,TCP相当于车辆,如果没有交通规则的话,就会乱套,http就是交通规则,http规定了运输方式有:get,post,put,head,options等等,当进行get请求时,车上贴上get标签,货物放在上层运输,当进行post请求时,车上贴上post标签,货物放在下层运输,当然get请求时货物也可以放在下层运输,可见http只是一个行为准则,如何实现还是要看TCP。

区别

产生数据包

get产生一个TCP数据包,post产生两个TCP数据包

对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)

对于post方式的请求,浏览器先发送header,服务器响应100 continue ,浏览器再发送data,服务器响应200 ok(返回数据)

请求参数的限制

get请求的参数只能是ASCII码,所以中文需要URL编码,而post请求传参没有这个限制;

传递参数

get请求通过拼接url进行传递参数

post请求通过body体传递参数

url可见性

get请求参数url可见

post请求参数url不可见

是否可以缓存

get请求是可以缓存的

post请求不可以缓存

传输的数据量

get请求一般传输的数据量较小,大小不超过2k-4k,根据浏览器的不同,限制也有所不同,但是差别不大

post请求一般传输的数据量较大,根据配置文件php.ini的大小来规定,可以无限大

安全性

get请求的数据直接拼接在url后可以看见,不安全

post请求的数据放在body里不可见,相对比较安全

其实,无论是get还是post安全性都不是很高,防不住有人会抓包,这只是一种相对的概念,直观看起来可能觉得post会比较安全。

回退页面的反应

get请求回退,不会对当前页面产生任何影响

post请求回退,会再一次提交请求

小贴士

如果真的要说区别的话,上面列举的就可以了,但实际上他们俩的实现都是基于TCP/IP协议。上面的区别只是浏览器厂家根据约定做的一些限制,他们俩是http请求一开始设定的八种方法里其中的两个,这八种方法本质上无任何区别,只是让请求更加有语义而已。

八种方法:

OPTIONS 返回服务器所支持的请求方法

GET 向服务器获取指定资源

HEAD 与GET一致,只不过响应体不返回,只返回响应头

POST 向服务器提交数据,数据放在请求体里

PUT 与POST相似,只是具有幂等特性,一般用于更新

DELETE 删除服务器指定资源

TRACE 回显服务器端收到的请求,测试的时候会用到这个

CONNECT 预留,暂时不使用

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值