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 协议 ,转载请注明出处!