GET请求和POST请求有何区别?
本文最后更新于:2023年3月19日 晚上
本文转自:https://juejin.im/post/6844904097091420174
GET 请求
- 它是
HTTP常见的请求类型,最常见于向服务器查询某些信息。 - 可以将查询参数追加到
URL末尾,以便将信息发送给服务器。 - 对查询字符串的格式有要求,每个参数名称和值必须使用
encodeURIComponent进行编码,才能放到URL末尾,必须用&符号隔开。例如:baidu.com/index.php?name=111&id=222 - GET 请求产生一个数据包。对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据)
POST 请求
- 它是
HTTP常见的请求类型,最常见于向服务器发送应该被保存的信息或者查询某些信息。 - 可以添加请求参数,将请求参数添加到 body 中。
POST请求产生 2 个数据包,在火狐浏览器中,产生一个数据包。
GET 请求和 POST 请求的差别
GET请求的请求参数是添加到head中,可以在url中可以看到;POST请求的请求参数是添加到BODY中,在url中不可见。GET请求参数需要使用encodeURIComponent进行编码,必须用&符号隔开。- 请求的
url有长度限制,这个限制由浏览器和web服务器决定和设置的。例如 IE 浏览器对URL的最大限制为 2083 个字符,如果超过这个数字,提交按钮没有任何反应。因为GET请求的参数是添加到URL中,所以GET请求的URL的长度限制需要将请求参数长度也考虑进去。而POST请求不用考虑请求参数的长度。 GET请求产生一个数据包;POST请求产生 2 个数据包,在火狐浏览器中,产生一个数据包。这个区别点在于浏览器的请求机制,先发送请求头,再发送请求体。因为GET没有请求体,所以就发送一个数据包,而POST包含请求体,所以发送两次数据包,但是由于火狐机制不同,所以发送一个数据包。- 由于
GET请求的参数是在url中,所以可以直接在浏览器中打开 GET请求会被浏览器主动缓存下来,留下历史记录,而POST默认不会。GET是幂等的,而POST不是。(幂等表示执行相同的操作,结果也是相同的)
GET 请求和 POST 请求的使用场景
如果想要查询的更快,可以使用GET请求。 其他的,并无差别。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!