get和post请求

post和get请求的区别:

请求方式
GET
POST
参数位置
url的query中
一般在content中,query也可
参数大小
受限于浏览器url大小,一般不超过32K
1G
服务器数据接收
接收1次
根据数据大小,可分多次接收
适用场景(语义)
从服务器端获取数据,不做增删改
向服务器提交数据,可做增删改查
安全性 不安全 安全
缓存 可缓存 不会主动缓存,除非手动设置
编码格式 只能进行url编码 支持多种编码方式
记录 会保留记录 不会保留记录
字符类型 只支持ASCII字符 没有字符类型限制

实质上:GET和POST本质上就是TCP链接,并无差别。

GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。

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

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效,但是还是应区别情况使用get/post

1. GET与POST都有自己的语义,不能随便混用。

2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

参考:https://www.cnblogs.com/mark5/p/11075383.html

原文地址:https://www.cnblogs.com/liumcb/p/13614892.html