Appearance
Question
当我们找工作面试时,总会遇到面试官问一个问题:GET和POST有什么区别?
而大部分人的回答则是,GET相比较POST效率高,但是传递数据少,隐秘性低。
而当面试官再问起,为什么效率高?GET响应几次?POST响应几次?为什么GET传递数据少?大部分人也是支支吾吾。所以我就在此,写上大部分我知道的那些GET和POST的区别之处
说到底,他们都是TCP/IP协议,只不过在表现形式和传递形式上有所不同
不同处
Different | GET | POST |
---|---|---|
请求区别 | 通常用于向服务器查询某些信息,请求会把参数放在URL中 URL是直观的,可以在地址栏看到的 | 通常用于向服务器发送应该被保存的数据,通过request body传递参数,作为请求的主体 |
缓存 | 会被缓存,如果请求两次相同的数据,第二次速度明显快于第一次 所以请求大数据量时推荐使用GET | 不会被缓存 |
历史 | 可以被收藏为书签 | 不可以 |
浏览器历史 | 保存浏览器历史记录 | 不可以 |
大小限制 | 浏览器服务器对它的限制IE :2083字节Firefox :65536字节Safari :80000字节Chrome :8182字节Opera :190000字节Apache :8192字节IIS :16384字节(可以修改)但最好不要超过2k | 对数据大小没有限制 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 mulitipart/form-data |
请求过程 | 浏览器请求TCP连接(第一次握手) 服务器答应进行TCP连接(第二次握手) 浏览器确认,发送get请求头和数据 服务器返回200 Ok响应 | 浏览器请求TCP连接(第一次握手) 服务器答应进行TCP连接(第二次握手) 浏览器确认,发送post请求头 服务器返回100 Continue响应 浏览器发送数据 服务器返回200 Ok响应 |
推荐 | 在数据查询时 | 数据添加、修改、删除时 |