首页 > 编程知识 正文

get和post提交方式的区别,get与post提交方法的区别

时间:2023-05-06 03:19:16 阅读:243942 作者:1265

今天在知乎上看见一个一道面试题:POST 和 GET 的区别!!

隐约记得:POST 是在请求的内容是放在请求体中,而 GET 的参数是放在地址栏上,所以 POST 相对安全。

本着严谨治学的态度遂百度了一下专业的解释,发现了以下答案:

GET在浏览器回退时是无害的,而POST会再次提交请求。

       这句话简单理解就是,get会将请求参数放在请求的url中,回退操作实际上浏览器会从之前的缓存中拿结果;post每次调用都会创建新的资源。还有人说从method的定义上说,get是幂等的,老衲查了一下,等幂性的意思就是一个请求和多次请求,资源的状态是一样的。get,head,put,delete都有等幂性。

GET产生的URL地址可以被Bookmark,而POST不可以。
 GET请求会被浏览器主动cache,而POST不会,除非手动设置。
 GET请求只能进行url编码,而POST支持多种编码方式。
 GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
 GET请求在URL中传送的参数是有长度限制的,而POST么有。
 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
 GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
 GET参数通过URL传递,POST放在Request body中。但是继续往下看还有另一个被作者称之为 BOSS 的答案引起了我的注意:

这个答案确实很新颖,以前没有见过这个解释,并且也没有关注过 HTTP 数据包问题,所以想借此机会学习一下网络抓包,顺便验证一下这个答案。

在此插入一个小提示!!

要想抓取本地的数据包,在安装抓包工具 wireshark 时候选择安装 npcap ,一定到把下列的三个选项都勾上!!

以下是抓取的 POST 和 GET 数据包的截图:

POST:

GET :

可以发现不论是 POST 还是 GET 都只是发送了一个 TCP 数据包,并没有以上博主所说的 POST 请求产生两次 TCP 数据包!

以上结论是基于 chrome 浏览器的普通表单提交,此结论并不代表所有。

原博主的结论有待论证

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。