先上结论:Get和Post有个JB的区别
Get和Post基本是码农都能将一两个区别,但经验使然我还是要硬刚没有区别。
首先最直观的就是:Post的参数通常在请求体中,记住是通常或者说书本这么说的。
但实际经验上都是混合使用(别杠,可以找找项目看看基本都能找到混合用法)。
一般有过经验的在用Get和Post时潜意识就会帮你选择好,为啥呢因为名字很容易让你明白该选择啥。
说说面试这个问题怎么回答虽然我不知道准确答案。
1、经验角度回答: Get通常是可回退的,而Post通常是会再次提交请求;
Get的Url地址是很容易被截获的,Post稍微有那么一丢丢的难度; Get方法的Url通常是被缓存的,Post通常不会;
GetUrl编码Post不仅限于此; Get参数会存在历史记录,Post通常不会;
如上回答,细品细细品实际上还是没有差别,非要杠那具体说说那个是实质性的错误?比如编码难不成平时还经常用些小众化的编码?再比如难不成记录Post还比Get难的一丢丢还有什么意义。所以啊这么说还不如直接说没区别。
2、书本角度回答:
GetPost是Http请求中的两种请求方法,你问我Http是啥?说实话百度下吧,Http是基于TCP/IP的万维网通信协议,因此Get和Post也是TCP/IP(没人打我吧),Get/Post都是Tcp的链接。技术上Get和Post能力是一样的,能做的事情是一模一样。Get加上请求体和Post带Url参数就没啥问题了。
如果这么回答大概率回复你一句:赶紧滚蛋。 3、经验书本角度回答:
Get一次就完成请求,Post两次。(别扯握手的规则,理解上评定)Get是1次Tcp连接;Post是2次Tcp连接。Get请求直接把数据发送,Post先发送头然后在发送数。这就扯到了浏览器,浏览器约定俗称Url2K字节,再扯服务器大多处理64KUrl。当然不全是.Yahoo团队曾用GET替换POST来优化网站性能(切记这是个坑)。firefox貌似post也是只发一次。
======================
打脸结论:GetPos有区别该用啥用啥。最起码名字不一样这个理由还不够吗?