GET 与 POST区别

GET、POST区别

  1. GET在浏览器回退时是无害的,而POST会再次提交请求。
  2. GET产生的URL地址可以被Bookmark,而POST不可以。
  3. GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  4. GET请求只能进行url编码,而POST支持多种编码方式。
    编码类型;GET:application/x-www-form-urlencoded; POST:application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
  5. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
  6. GET请求在URL中传送的参数是有长度限制的,而POST么有。
    浏览器和服务器对URL长度限制;服务器是因为处理长 URL 要消耗比较多的资源,为了性能和安全(防止恶意构造长 URL 来攻击)考虑;
  7. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制
  8. 与 POST 相比,GET 的安全性较差,因为参数直接暴露在URL上,所以不能用来传递敏感信息。在发送密码或其他敏感信息时绝不要使用 GET !
  9. GET参数通过URL传递,POST放在Request body中。
  10. get方式提交数据的大小(一般来说1024字节),http协议并没有硬性限制,而是与浏览器、服务器、操作系统有关,而POST理论上来说没有大小限制,http协议规范也没有进行大小限制,但实际上post所能传递的数据量根据取决于服务器的设置和内存大小。

POST 方法会产生两个TCP数据包?

GET产生一个TCP数据包;POST产生两个TCP数据包。
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。(并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。)
HTTP 协议中没有明确说明 POST 会产生两个 TCP 数据包,而且实际测试(Chrome)发现,header 和 body 不会分开发送。
所以,header 和 body 分开发送是部分浏览器或框架的请求方法,不属于 post 必然行为。

GET 和 POST 报文上的区别

GET /index.php?name=qiming.c&age=22 HTTP/1.1
Host: localhost
POST /index.php HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded

name=qiming.c&age=22

GET和POST本质上没有区别

GET和POST的底层是TCP/IP,也就是说,GET/POST都是TCP链接。

GET 与 POST区别

上一篇:JVM-运行时数据区之---方法区


下一篇:31. 下一个排列