get和post都可以实现传递数据的功能,主要区别如下:
1.安全性:get传值的安全性低于post
2.传输大小:get传送的数据量较小,一般不能大于2Kb(因为URL有长度限制);post传输数据量大,一般被默认为不受限制。
3.获取方式:使用$_GET获取get方式传送的值;使用$_POST获取post传送的值(当然,两者都可以使用$_REQUEST获取)
4.可见性:get传值的时候地址栏可以看见所传的值,而post传值是不可见的。(get传值是将值添加到URL的后面,例如:www.xxx/index.php?act=xxx&id=21 post传值是通过HTTP POST机制,将表单中各个字段和内容放到HTML HEADER里面,一起传送到action所指的URL地址,用户看不到这个过程)
5.数据多样性:post能发送更多的数据类型,get只能发送ASCII码字符
6.传输速度:get比post更快。(post请求包含更多的请求头,post在真正接受数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据)
post请求的过程:
1.浏览器请求tcp连接(第一次握手)
2.服务器答应进行tcp连接(第二次握手)
3.浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
4.服务器返回100 continue响应
5.浏览器开始发送数据
6.服务器返回200 ok响应
get请求的过程
1.浏览器请求tcp连接(第一次握手)
2.服务器答应进行tcp连接(第二次握手)
3.浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
4.服务器返回200 ok响应
也就是说,目测get的总耗是post的2/3左右