• 0
  • 0
分享
  • 我们常见的Get和Post,到底有什么区别——软件测试圈
  • 曼倩诙谐 2022-12-21 11:32:59 字数 1628 阅读 1006 收藏 0

  概述

  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 临时重定向。



作者:手辰lz    

来源:http://www.51testing.com/html/26/n-4478126.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   前言  自动化执行结果都需要有个报告来展示,常用的报告有HTMLTestRunner,pytest-html,Allure。这三种报告各有不同,本文主要介绍如何通过python来生成Alluer报告。  Allure  Alluer属于一种开源的测试框架,可以基于多种语言进行使用,如java的junit,python的pytest。alluer生成的报告内容比较美观,目前测试中常用的测试报告。Allure的环境是基于java环境的,前提条件需要将java的环境安装完成(下载JDK,配置环境变量)。  下载地址:https://github.com/allure-framework/allu...
            11 11 1858
            分享
          • 1、公司从哪些方面入手通过技术的手段提高测试效率?  想要提高效率的方法很多,例如增加自动化,增加人员的培训,规范工作流程等,但是我觉得,如果一个团队的lead,想要确实的提高团队的效率,最好的方法是问题驱动的过程改进。简单讲就是先将工作阶段细分,评估每个小阶段的效率,发现真正影响整个测试活动效率的问题,根据优先级,逐个去解决这些问题,持续性的过程改进,才能真正意义上的提交效率。2、如何有效的在项目中引入自动化,总感觉在现有的项目中进行自动化测试,是在为了自动化而自动化,并没有提高测试的效率。  我觉得这是一个好问题,而且是一个非常普遍的问题,我觉得想要引入自动化,最少要经过三个步骤:  第一...
            0 5 3438
            分享
          • 1、什么是兼容性测试?兼容性测试侧重哪些方面?参考答案:兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。兼容和配置测试的区别在于,做配置测试通常不是Clean OS下做测试,而兼容测试多是在Clean OS的环境下做的。2、我现在有个程序,...
            11 11 984
            分享
          •   1.知道为什么要测试  执行渗透测试的目的是什么?是满足审计要求?是你需要知道某个新应用在现实世界中表现如何?你最近换了安全基础设施中某个重要组件而需要知道它是否有效?或者渗透测试根本就是作为你定期检查防御健康的一项例行公事?  当你清楚做测试的原因时,你也就知晓自己想从测试中得到什么了,而这可以让测试规划工作更有效率。知道做测试的缘由可以让人恰当地确立测试的范围,确定测试结果将会揭露什么问题。  或许这一步中最重要的一部分,是让团队提前架设好准备从测试结果中得出正确的结论的心理预期。如果测试是要审查IT基础设施的某个特定方面(比如说新的Web应用),那就没必要着墨于公司整体安全。理解做测...
            13 13 1262
            分享
          •   关于Jektor  Jektor是一款功能强大的Windows用户模式Shellcode执行测试工具,该工具可以帮助广大研究人员了解和测试恶意软件所使用的各种不同技术。  该工具主要针对的是Shellcode注入技术,可以演示恶意软件在目标系统上执行Shellcode时所使用的技术方法,其中包括:  · 动态解析API函数以避免IAT包含  · 使用未记录的NT Windows API函数  · 通过CreateThread执行本地Shellcode  · 通过CreateRemoteThread执行远程Shellcode  · 通过QueueUse...
            0 0 1058
            分享
      • 51testing软件测试圈微信