一: GET 和 POST 的区别
GET 在浏览器回退时是无害的, 而 POST 会再次提交请求.
GET 产生的 URL 地址可以被 Bookmark(标记), 而 POST 不可以.
GET 请求会被浏览器主动 cache, 而 POST 不会, 除非手动设置.
GET 请求只能进行 url 编码, 而 POST 支持多种编码方式.
GET 请求参数会被完整保留在浏览器历史记录里, 而 POST 中的参数不会被保留.
GET 请求在 URL 中传送的参数是有长度限制 (主要因为 url 长度限制) 的, 而 POST 么有(有请求体).
对参数的数据类型, GET 只接受 ASCII 字符, 而 POST 没有限制.
GET 比 POST 更不安全, 因为参数直接暴露在 URL 上, 所以不能用来传递敏感信息.
GET 参数通过 URL 传递, POST 放在 Request body 中.
GET 和 POST 是什么? HTTP 协议中的两种发送请求的方法.
HTTP 是什么? HTTP 是基于 TCP/IP 的关于数据如何在万维网中如何通信的协议.
HTTP 的底层是 TCP/IP. 所以 GET 和 POST 的底层也是 TCP/IP, 也就是说, GET/POST 都是 TCP 链接. GET 和 POST 能做的事情是一样一样的. 你要给 GET 加上 request body, 给 POST 带上 url 参数, 技术上是完全行的通的.
业界不成文的规定是,(大多数)浏览器通常都会限制 url 长度在 2K 个字节, 而 (大多数) 服务器最多处理 64K 长度的 url. 超过的部分, 恕不处理
虽然 GET 可以带偷偷带 request body, 也不能保证一定能被接收到哦.
GET 和 POST 本质上就是 TCP 链接, 并无差别. 但是由于 HTTP 的规定和浏览器 / 服务器的限制, 导致他们在应用过程中体现出一些不同.
get 具有幂等性, 多次调用同样的 url 没有副作用, 结果仍是一样的.
对于 GET 方式的请求, 浏览器会把 http header 和 data 一并发送出去, 服务器响应 200(返回数据);
而对于 POST, 浏览器先发送 header, 服务器响应 100 continue, 浏览器再发送 data, 服务器响应 200 ok(返回数据)
GET 与 POST 都有自己的语义, 不能随便混用.
据研究, 在网络环境好的情况下, 发一次包的时间和发两次包的时间差别基本可以无视. 而在网络环境差的情况下, 两次包的 TCP 在验证数据包完整性上, 有非常大的优点.
并不是所有浏览器都会在 POST 中发送两次包, Firefox 就只发送一次
总结:
1.Get 是不安全的, 因为在传输过程, 数据被放在请求的 URL 中; Post 的所有操作对用户来说都是不可见的.
2 Get 传送的数据量较小, 这主要是因为受 URL 长度限制; Post 传送的数据量较大, 一般被默认为不受限制.
3 Get 限制 Form 表单的数据集的值必须为 ASCII 字符; 而 Post 支持整个 ISO10646 字符集.
4 Get 执行效率却比 Post 方法好. Get 是 form 提交的默认方法.
来源: http://www.bubuko.com/infodetail-3505074.html