前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GET请求和POST请求的区别

GET请求和POST请求的区别

作者头像
不爱吃糖的程序媛
发布2024-02-09 08:22:51
1050
发布2024-02-09 08:22:51
举报

二者在传输上基本没有区别,二者都是HTTP请求中的两种。HTTP协议是基于TCP/IP的应用层协议,所以无论GET还是POST,用的都是同一个传输层协议,所以在传输上可以认为基本无差别。

它们的主要区别如下:

1.应用场景的区别:

GET请求是一个幂等的请求,一般用来请求获取数据,比如查询,对服务器资源不会产生影响;

POST请求不是一个幂等的请求,一般用来提交数据到后台,比如创建或者更新表单,会对服务器资源产生影响;

幂等是指同样的请求被执行一次或者多次,最终得到的结果都是相同的。幂等性表示接口可重复调用。

纠正一个误区,不是获取数据只能用GET请求,只是约定俗称通过GET来获取数据,只是约定并非规定,只要后端支持就可以。

2.安全性和参数的区别:

GET请求传递的参数一般是拼接在url后面的,暴露在地址栏上,安全性很低,还会被保留在历史记录中;

POST请求一般将传递的参数放在request body请求体中,不会在地址栏显示,安全性比GET请求高一点,但是也是不安全的;

3.是否被缓存的区别

GET请求可以被缓存,也会保留在浏览器的历史记录中;

POST请求一般不会被缓存,也不会保留在浏览器的历史记录中;

通常HTTP请求只适用于不改变服务端数据的请求,比如查询类的请求,因为GET通常是用于获取数据,一般不做更新服务器数据的操作,所以符合HTTP缓存适用于不改变服务器数据的请求的原则,所以说GET请求可以被缓存。

4.请求长度的区别:

GET请求传递的参数一般显示在地址栏上,由于浏览器对url的长度有限制,所以GET请求发送数据有长度的限制;

POST请求一般没有请求长度的限制,因为请求数据在body上;

5.参数类型的区别:

GET请求只接受ASCII字符;

POST请求没有限制,支持更多的数据类型;

6.其他区别

GET请求刷新浏览器或者回退没有影响;POST请求则会重新请求一遍;

GET请求通常是通过url地址请求;POST请求常见的则是form表单请求;

GET请求产生一个TCP数据包;POST请求产生两个TCP数据包;

tcp数据包具体就是: 1、GET请求时,浏览器会把 header 和 data 一起发送出去,服务器响应200(返回数据) 2、POST请求时,浏览器首先发送headers,服务器响应100 continue,浏览器再发送data,服务器响应200(返回数据)

如果把TCP传输比作汽车运输,那么GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

GET请求会被浏览器主动cache;而POST请求不会,除非手动设置;

GET请求只能进行URL编码(appliacation-x-www-form-urlencoded);POST请求支持多种(multipart/form-data等)

以上就是GET请求 和 POST请求 的主要区别,大家还有补充的可以在评论区留言。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com