GET请求和POST请求有何区别?

本文最后更新于:2023年3月19日 晚上

本文转自:https://juejin.im/post/6844904097091420174

GET 请求

  1. 它是 HTTP 常见的请求类型,最常见于向服务器查询某些信息。
  2. 可以将查询参数追加到 URL末尾,以便将信息发送给服务器。
  3. 对查询字符串的格式有要求,每个参数名称和值必须使用encodeURIComponent进行编码,才能放到URL末尾,必须用&符号隔开。例如:baidu.com/index.php?name=111&id=222
  4. GET 请求产生一个数据包。对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据)

POST 请求

  1. 它是 HTTP 常见的请求类型,最常见于向服务器发送应该被保存的信息或者查询某些信息。
  2. 可以添加请求参数,将请求参数添加到 body 中。
  3. POST请求产生 2 个数据包,在火狐浏览器中,产生一个数据包。

GET 请求和 POST 请求的差别

  1. GET 请求的请求参数是添加到 head 中,可以在 url 中可以看到;POST 请求的请求参数是添加到BODY中,在url 中不可见。
  2. GET 请求参数需要使用 encodeURIComponent 进行编码,必须用 & 符号隔开。
  3. 请求的url有长度限制,这个限制由浏览器和 web 服务器决定和设置的。例如 IE 浏览器对 URL的最大限制为 2083 个字符,如果超过这个数字,提交按钮没有任何反应。因为GET请求的参数是添加到URL中,所以GET请求的URL的长度限制需要将请求参数长度也考虑进去。而POST请求不用考虑请求参数的长度。
  4. GET请求产生一个数据包; POST请求产生 2 个数据包,在火狐浏览器中,产生一个数据包。这个区别点在于浏览器的请求机制,先发送请求头,再发送请求体。因为GET没有请求体,所以就发送一个数据包,而POST包含请求体,所以发送两次数据包,但是由于火狐机制不同,所以发送一个数据包。
  5. 由于GET请求的参数是在url中,所以可以直接在浏览器中打开
  6. GET 请求会被浏览器主动缓存下来,留下历史记录,而 POST 默认不会。
  7. GET是幂等的,而POST不是。(幂等表示执行相同的操作,结果也是相同的)

GET 请求和 POST 请求的使用场景

如果想要查询的更快,可以使用GET请求。 其他的,并无差别。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!