1. 标准答案
GET 在浏览器回退时是无害的, 而 POST 会再次提交请求
GET 产生的 URL 地址可以被 Bookmark, 而 POST 不可以
GET 请求会被浏览器主动 cache, 而 POST 不会, 除非手动设置
GET 请求只能进行 url 编码, 而 POST 支持多种编码方式
GET 请求参数会被完整保留在浏览器历史记录里, 而 POST 中的参数不会被保留
GET 请求在 URL 中传送的参数是有长度限制的, 而 POST 没有
对参数的数据类型, GET 只接受 ASCII 字符, 而 POST 没有限制
GET 比 POST 更不安全, 因为参数直接暴露在 URL 上, 所以不能用来传递敏感信息
GET 参数通过 URL 传递, POST 放在 Request body 中
2. 深入答案
GET 和 POST 是 HTTP 协议中的两种发送请求的方法
HTTP 是基于 TCP/IP 关于数据如何在万维网中如何通信的协议 (HTTP 的底层是 TCP/IP 所以 GET 和 POST 的底层也是 TCP/IP, 也就是说, GET/POST 都是 TCP 链接 GET 和 POST 能做的事情是一样一样的你要给 GET 加上 request body, 给 POST 带上 url 参数, 技术上是完全行的通的)
GET 产生一个 TCP 数据包; POST 产生两个 TCP 数据包 (对于 GET 方式的请求, 浏览器会把 http header 和 data 一并发送出去, 服务器响应 200(返回数据); 而对于 POST, 浏览器先发送 header, 服务器响应 100 continue, 浏览器再发送 data, 服务器响应 200 ok(返回数据))
来源: http://www.bubuko.com/infodetail-2520063.html