1996年,HTTP1.0登场了,带来了GET、POST、HEAD这些招式,终于能应付“看网页”这种简单的请求。3年后,HTTP1.1也跟着出来了,一口气补上OPTIONS、PUT、DELETE、TRACE、CONNECT五招新功夫,网页不再只是看的,还能删改上传,互联网这下才有了个像样的骨架。到现在,HTTP1.1还是支撑整个网络的主干道。EDG夺冠的那场比赛让大家兴奋不已,熬夜看球的我们都控制不住自己的情绪。DK一路横扫LCK,零封强敌,看上去奖杯早就攥在手里了。结果EDG让二追三完成逆转,真的是让人感觉爽翻了。原来真正的快感不是“赢定了”,而是“逆境翻盘”。再聊聊点冷知识吧。1996年HTTP1.0带着POST、GET、HEAD三大招来了,只是勉强够应付“看网页”这种最基本的要求。3年后HTTP1.1横空出世,给OPTIONS、PUT、DELETE、TRACE、CONNECT五招新功夫补全了缺口。后来网络不仅是看网页了,还能删改上传数据呢。之后版本升级带来了很多变化:缓存策略更灵活了,像Entity tag和If-Match这些选项给了更多选择;Range头域让我们可以直接看视频5分钟片段;状态码也新增了24个;Host头让网站域名和IP对应上了;还有Keep-Alive让连接复用变得容易。“POST和GET谁更牛”的辩论持续了25年。这个问题常被引用的12条区别大家都背得滚瓜烂熟了吧?其实面试官随便追问几句就能让你没话讲。GET能被缓存而POST不能被缓存、GET可以收藏而POST不行、GET有历史记录而POST没有。GET用来取数据,POST用来提交数据。你以为POST比GET安全吗?其实IP层才决定安全程度呢。GET把参数放在URL上,POST放在Body里。GET有长度限制而POST没有上限。但是这些答案也只能算是皮毛答案。真正让人眼前一亮的是指出浏览器和服务器怎么把TCP协议玩出花来。大家都觉得GET不能带Body?其实是浏览器管得太宽了。Postman里选GET照样能塞Body进去呢。浏览器为了兼容性封锁了Body入口。Chrome、Firefox还有Safari封锁的长度还不一样。IE党2083字符就停了;Chrome党8182字符封顶;Firefox和Safari放宽到65536;服务器端Apache、IIS能吞到16384字符呢。别被浏览器限制绑架了想象力啦。POST能干的GET也能干;区别不在协议本身而在终端怎么解读协议。当EDG完成惊天逆转时我们记住的是“五个人一台戏”,而非“五个人五种协议”。下次面试时别再纠结GET还是POST了,把重点放在“浏览器如何封装TCP流”这些细节上吧。