如何在JMeter中移除后续GET请求体以解决CloudFront错误?
解决GET请求携带请求体导致CloudFront错误的方法
方法1:全局前置处理器统一处理
- 在测试计划根节点添加HTTP请求默认值元件
- 给该元件添加JSR223前置处理器(推荐用Groovy语言),写入以下脚本:
脚本会自动识别所有GET请求,清空其请求体,不影响POST、PUT等需要请求体的请求方法。if (sampler.getMethod().equalsIgnoreCase("GET")) { sampler.setPostBodyRaw(false); sampler.setArguments(new org.apache.jmeter.config.Arguments()); }
方法2:修改BlazeMeter录制规则
- 打开BlazeMeter Chrome扩展设置,找到「录制过滤器」或「请求修改」选项
- 添加规则:当请求方法为GET时,自动移除请求体。部分版本的扩展支持直接配置这类规则,从源头避免录制出带请求体的GET请求。
方法3:批量清理已录制的脚本
如果已经完成录制,可通过JSR223脚本批量修改所有GET请求:
- 在测试计划根节点添加JSR223后置处理器,写入以下代码:
注意:该脚本只需执行一次,可通过逻辑控制器控制执行时机(比如放在仅执行一次的线程组中)。def testPlan = ctx.getTestPlan() def allSamplers = org.apache.jmeter.testelement.TestElementFinder.allDescendants(testPlan, org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.class) allSamplers.each { sampler -> if (sampler.getMethod().equalsIgnoreCase("GET")) { sampler.setPostBodyRaw(false) sampler.setArguments(new org.apache.jmeter.config.Arguments()) } }
方法4:手动批量编辑(适合小规模脚本)
- 在JMeter中筛选所有GET请求
- 逐个打开请求的「请求体」标签页清空内容;若数量较多,可使用JMeter的「查找替换」功能,批量移除GET请求的请求体配置。
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

