我们常见的Get和Post,到底有什么区别

Posted 测试萌萌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们常见的Get和Post,到底有什么区别相关的知识,希望对你有一定的参考价值。

概述

GET请求在URL中传送的参数是有长度限制的,而POST没有。

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。而POST数据不会显示在URL中。是放在Request body中。

对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

GET请求参数会被完整保留在浏览器历史记录里;相反,POST请求参数也不会被浏览器保留。

GET请求只能进行url编码( application/x-www-form-urlencoded),而POST支持多种编码方式。

GET请求会被浏览器主动缓存,而POST不会,除非手动设置。
 
GET在浏览器回退时是无害的,而POST会再次提交请求。

问1

Get请求有Request body么?如果有的话参数可以像Post请求一样放在里面么?

答: HTTP 只是一种协议规范,底层还是TCP/IP。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

问2

URL中传送参数的长度限制在Get和Post中都是怎么样的呢?

业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略。所以,虽然GET可以带request body,却不能保证一定能被接收到。

问3

Get、Post请求发送的数据包有什么不同吗?

GET:浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

POST:有可能会先发送请求头,服务端返回 100-continue 然后自己在发送后面的数据包,也有可能会之间将所有的数据都发送过去,这和浏览器的设定有关系。常见的浏览器,内部设定一次POST的数据超过1KB就先只发“请求头”,否则就一次性全发。

问4

转发 和 重定向的区别

转发是服务器行为,重定向是客户端行为。
 
转发——>客户浏览器发送HTTP请求——>web服务器接受请求——>调用内部一个方法在容器内部完成请求处理和转发动作——>再将转发跳转到的那个网页资源返回给客户; 转发只能在同一个容器内完成 转发的时候浏览器地址是不会变的,在客户浏览器里只会显示第一次进入的那个网址或者路径,客户看不到这个过程,只是得到了想要的目标资源。转发行为浏览器只做了一次请求。(转发只能跳转一次)

重定向——>客户浏览器发送HTTP请求——>web服务器接受请求后发送302状态码以及新的位置给客户浏览器——>客户浏览器发现是302响应,则自动再发送一个新的HTTP请求,请求指向新的地址(302:Found 临时移动,但资源只是临时被移动。即你访问网址A,但是网址A因为服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B。)——>服务器根据此请求寻找资源发个客户;再客户浏览器中显示的是重定向之后的路径,客户可以看到地址的变化。重定向行为浏览器做了至少两次请求。(重定向可以跳转多次)

问5

重定向 301 和302 的区别

在客户端是无感的,就是url 变换了下就没了。

301 Moved Permanently 永久重定向。 浏览器会去做一些优化操作。比如更新书签的地址,更新历史记录,下次访问就直接访问新的地址了。爬虫也会去更新自己的数据库。

302 Moved Temporarily 临时重定向。

最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习技术千万不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

以上是关于我们常见的Get和Post,到底有什么区别的主要内容,如果未能解决你的问题,请参考以下文章

php中get与post请求有什么区别

☀️post和get到底有哪些区别?

☀️post和get到底有哪些区别?

GET和POST有什么区别?及为什么网上的多数答案都是错的

面试小问题:get与post两种请求方法的区别

面试小问题:get与post两种请求方法的区别