Skip to content

Question

当我们找工作面试时,总会遇到面试官问一个问题:GET和POST有什么区别?

而大部分人的回答则是,GET相比较POST效率高,但是传递数据少,隐秘性低。

而当面试官再问起,为什么效率高?GET响应几次?POST响应几次?为什么GET传递数据少?大部分人也是支支吾吾。所以我就在此,写上大部分我知道的那些GET和POST的区别之处

说到底,他们都是TCP/IP协议,只不过在表现形式和传递形式上有所不同

不同处

DifferentGETPOST
请求区别通常用于向服务器查询某些信息,请求会把参数放在URL中
URL是直观的,可以在地址栏看到的
通常用于向服务器发送应该被保存的数据,通过request body传递参数,作为请求的主体
缓存会被缓存,如果请求两次相同的数据,第二次速度明显快于第一次
所以请求大数据量时推荐使用GET
不会被缓存
历史可以被收藏为书签不可以
浏览器历史保存浏览器历史记录不可以
大小限制浏览器服务器对它的限制
IE:2083字节
Firefox:65536字节
Safari:80000字节
Chrome:8182字节
Opera:190000字节
Apache:8192字节
IIS:16384字节(可以修改)

但最好不要超过2k
对数据大小没有限制
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded 或 mulitipart/form-data
请求过程浏览器请求TCP连接(第一次握手)
服务器答应进行TCP连接(第二次握手)
浏览器确认,发送get请求头和数据
服务器返回200 Ok响应
浏览器请求TCP连接(第一次握手)
服务器答应进行TCP连接(第二次握手)
浏览器确认,发送post请求头
服务器返回100 Continue响应
浏览器发送数据
服务器返回200 Ok响应
推荐在数据查询时数据添加、修改、删除时