GET 与 POST 两种请求方法的区别
墨初 互联知识 3658阅读
说到WEB开发中GET与POST两种请求方法,相信有点WEB知识的开发者,都能说出个一二三来。但它们之间的区别你能说出多少来呢?下面飞鸟慕鱼博客的小编就收集了一些资料,来说一下 POST 与 GET 请求的区别。
GET 与 POST 的简单理解
GET 与 POST 是 HTTP 协议中,两种发送请求的方法。
HTTP 是基于 TCP/IP 的关于数据如何在万维网中如何通信的协议,它底层是 TCP/IP。所以 GET 和 POST 的底层也是TCP/IP,也就是说,GET 与 POST都是TCP链接。
GET 与 POST 所要做的事情都是一样的,但硬要说它们之间的区别,那还是有的。
GET 与 POST 的区别
GET 与 POST 之间的区别,是有请多的,以下是网上收集的一些,大家可参考一下。
1、GET在浏览器回退时是无害的,而POST会再次提交请求
2、GET请求会被浏览器主动cache(缓存),而POST不会
3、GET产生的URL地址可以被Bookmark(存为便签),而POST不会
4、GET只能进行url编码,而POST可以支持多种编码方式
5、GET请求在URL中的参数有长度限制,而POST没有
6、GET请求参数会被完整保留在浏览器历史记录里,而POST不会
7、GET只接受ASCII字符类型的数据,而POST没有限制。
8、GET没有POST安全,因为参数直接暴露在URL上
9、GET参数通过URL传递,POST放在Request body中
10、Get执行效率却比Post方法好。
11、Get是form提交的默认方法。
GET 与 POST 请求的TCP数据包对比
TCP:(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
在 GET 与 POST 请求中,都会发送 TCP 的数据包。在实际请求中,GET只产生一个 TCP 的数据包,而 POST 会产生两个 TCP 的数据包。
网上找的POST 与 GET 对比图
1、在 GET 方式的请求中,浏览器会把 http header 和 data 一起发送出去,服务器响应200(返回数据);
2、在 POST 方式的请求中,浏览器先发送 http header,等服务器响应100 continue,浏览器再发送 data(form表单内的数据),服务器响应200(返回数据,表示服务器已接收数据并正确处理)。
PS:在网络条件较好的情况下,POST(发送了两次数据包) 与 GET(发送了一次数据包) 请求的性能差距是可以忽略不计的。而 POST 发送的 TCP 数据包在完整性上,是很有优势的。