16. HTTP 方法:GET 与 POST 对比

Posted 全端学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了16. HTTP 方法:GET 与 POST 对比相关的知识,希望对你有一定的参考价值。

在客户端浏览器和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST,下面来比较一下这两种方式。

  • GET - 常用于从指定的资源请求数据。
  • POST - 常用于向指定的资源提交要被处理的数据。

比较:

  • GET 在浏览器刷新和回退时是无害的,而 POST 会再次提交请求;
  • GET 产生的URL地址可以被添加为书签(或收藏),而 POST 不可以;
  • GET 请求会被浏览器缓存,而 POST 不会被缓存,除非手动设置;
  • GET 请求只能进行 URL 编码(application/x-www-form-urlencoded),而 POST 支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data);
  • GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留;
  • GET 请求在 URL 中传送的参数是有长度限制的(大多数浏览器通常都会限制 URL 长度为 2048 个字节),而 POST 没有长度限制;
  • 对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制;
  • GET 比 POST 更不安全,因为参数会直接暴露在 URL 上,所以不能用来传递敏感信息;
  • GET 参数通过 URL 传递,POST 放在 request body 中;
  • GET 请求产生一个 TCP 数据包,而 POST 请求产生两个 TCP 数据包:对于 GET 方式的请求,浏览器会把 HTTP 头信息和数据一并发送出去,而对于 POST 请求,浏览器先发送请求头信息,服务器响应返回 100 状态码时,浏览器再发送请求主体中的数据(也不是所有浏览器在 POST 请求时都会发送两个数据包,比如 Firefox 就只发送一个),这样看来 GET 会比 POST 更高效。