前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jmeter脚本中请求方式由post变成了get,什么原因?

jmeter脚本中请求方式由post变成了get,什么原因?

原创
作者头像
魏景维
修改2022-05-30 17:21:21
2.2K0
修改2022-05-30 17:21:21
举报

【问题背景】

某健康码项目中,jmeter压测脚本执行后报错,响应码为400,并且请求方式由post变为了get。打开查看结果树的详情,发现存在test-0、test-1两个请求,test-0请求返回301的响应码。(现象如下图所示)

【解决思路】

1、检查域名是否正确:查看响应后的url,发现是正确的

2、请求方式是否定义:脚本中定义了post的请求方式

3、协议不对:猜测是将https协议写成了http导致,更改为https协议后,依然报错

4、重启jmeter后再请求:重启jmeter后请求,仍然没解决。

5、重写脚本:新建一个测试计划,重写脚本后仍然不对。

【最终解决】

压测同学在postman编写后可以正常跑通,postman跑通后,感觉更加疑惑。通过复制cURL->jmeter工具->import from cUrl导入jmeter后,也可以正常跑通了。对比两个脚本,发现jmeter脚本中的url写错了,url末尾缺少/。在postman脚本中删掉末尾的/,也报同样的错误。

【jmeter报错根本原因】

以上现象引申出一个问题:url末尾加反斜杠/和不加的区别是什么?

1、url末尾加/和不加/的区别

概念:url后面有没有反斜杠/的区别在于该url指向的是一个文件,还是一个目录

原理:当web服务器接收到该请求时http://test.com/fxg,会在根目录下搜索名为fxg的文件,如果没有该文件,则会当作目录处理。此时服务器会执行301永久重定向将/fxg定向到/fxg/目录,然后返回fxg目录下的默认首页。

2、请求方式为什么从post变为了get

由于是301重定向后,请求方式由post变更为了get,因此查看301的详细解释。

301永久重定向:该状态码表示请求的资源已经被分配了新的URI, 以后应使用资源现在所指的URI, 也就是说如果已经把资源对应的URI保存为书签了, 这时应该按Location首部字段提示的URI重新保存。

注: 当301(302、303)状态码返回时, 几乎所有的浏览器都会把POST改成GET, 并删除请求报文内的主体, 之后请求会自动再次发送。即使301, 302禁止将POST方法改成GET方法, 但实际使用中大家仍然将其改成了GET。

3、解决方法

可以将Nginx配置文件中的return 301 永久重定向改为return 307 临时重定向。(307临时重定向与302意义相同,但307会遵照标准,不会从post变为get)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【问题背景】
  • 【解决思路】
  • 【最终解决】
  • 【jmeter报错根本原因】
    • 1、url末尾加/和不加/的区别
      • 2、请求方式为什么从post变为了get
        • 3、解决方法
        相关产品与服务
        命令行工具
        腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档