GET 和 POST

419 阅读1分钟

这篇文章总结一下 http 请求方式 GET 和 POST 的区别。

一句话总结,GET 和 POST 的根本区别就在于:GET是获取资源,POST 是请求资源。鉴于这个根本区别,实际使用中的区别有如下几点:

一、幂等性

1、GET 具有幂等性,POST 具有不幂等性。(传送门:幂等--百度百科)。

2、用浏览器打开的网页会发送 GET 请求,用 POST 打开网页要使用 form 标签。

3、GET 获取的网页可以任意刷新,POST 网页刷新之后会要求再次确认。

4、GET 获取的网页可以用书签收藏,POST 打开的网页不能收藏。

5、GET 打开的网页可以缓存,POST 打开的网页不能缓存。

二、请求参数

1、通常情况下,GET 请求的参数放在 url 中,POST 请求的参数放在 body (消息体)中。

2、GET 请求的参数相较于 POST 请求的参数更不安全,因此不能用 GET 请求敏感信息。(实际上,POST 请求的参数也不是十分安全,其参数就放在消息体中)

3、GET 请求的参数具有长度限度,POST 请求的参数没有长度限度。(实际上,长度限度是浏览器限制的,并不是协议里面限制的,并且 POST 请求参数也是有长度限度的,浏览器不会是无限度请求的)

三、TCP 数据包

通常情况下,GET 请求只会发送一个 TCP 数据包,POST 请求会发送两个及以上个 TCP 数据包,因为一般情况下 GET 没有消息体,一次性就能发送完。