1、url 可见性

get,参数url可见;

post,url参数不可见

2、传递参数

get,通过 拼接 url 传递参数;

post,通过 body 传输参数

3、缓存性

get请求是可以缓存的
post请求不可以缓存

4、传输数据的大小

get 传输数据大小不超过2k-4k

post 传输数据的大小根据 php.ini 配置文件设定,
大小没有限制

6、安全性

原则上 post 比 get 安全,毕竟传输参数时url不可见,
如果对传递的参数进行加密,其实都一样。

7、数据包

GET 产生一个TCP数据包;
POST 产生两个TCP数据包。

对于GET
浏览器会把 header 和 data 一起发送出去,
服务器响应 200(返回数据)

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

在网络环境差的情况下,
两次包的TCP在验证数据包完整性上,有非常大的优点。

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