Java Web程序员面试笔试宝典
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

真题1 HTTP请求的GET与POST方式有什么区别?

【出现频率】★★☆☆☆ 【学习难度】★★☆☆☆

答案:一般来说,GET是获取数据,POST是修改数据,但实际上一种方式可以做所有事情。

两者区别如下。

1)GET在浏览器回退时是无害的,而POST会再次提交请求。

2)GET请求会被浏览器主动缓存,而POST不会,除非手动设置。

3)GET产生的URL地址可以被Bookmark,而POST不可以。

4)GET参数通过URL传递,POST放在Requestbody中。

5)GET请求参数会被完整保留在浏览器的历史记录里,而POST中的参数不会被保留。

6)GET请求只能进行URL编码,而POST支持多种编码方式。

7)GET只接受ASCII字符参数的数据类型,而POST没有限制。

8)GET请求在URL中传送的参数是有长度限制的,而POST没有限制,不同浏览器和Web服务器限制的最大长度不一样。实际上HTTP协议并没有限制请求长度。IE和Safari浏览器限制2KB,Opera限制4KB,Firefox限制8KB(非常老的版本限制256B),如果超出了最大长度,大部分的服务器直接截断,也有一些服务器会报错误。

9)GET的效率较高。因为GET把请求的数据放在URL上,即HTTP协议头上,产生一个TCP数据包,浏览器会把HTTP Header和data一并发送出去,服务器响应200(返回数据);而POST把数据放在HTTP的包体内(Requestbody),产生两个TCP数据包,浏览器先发送Header,服务器响应100,浏览器再发送data,服务器响应200(返回数据)。所以GET的效率较高。