Jmeter的HeaderManager在Linux上使用\ r \ n

时间:2018-08-02 09:48:40

标签: jmeter newline multipartform-data

我正面临以下问题。有人可以建议吗?

我有一个Jmeter场景,它通过原始的多部分POST进行文件上传仿真。 (不使用Jmeter的默认值'使用multipart / form-data进行POST '。只需自行构建POST)。

方案在WIN上运行良好。但是,当我在Linux上运行它时,它会失败。 我得到的是“无效的多部分有效载荷格式”

这是HTTPS,所以我无法使用tcpdump检查有效负载(可能是可能的,只是不知道如何...) 无论如何,我只是用一些不安全的方式更改了原始URL,只是为了查看有效负载。 我发现那里很奇怪-所有标头都以\ r \ n结尾,而消息使用\ n作为换行符(在Linux中是正确的)。

是否考虑过为什么Jmeter为所有标头添加\ r \ n?目前,我无法从Linux运行此类请求,因为标头和主体内的边界似乎彼此不匹配。

尝试同时使用HeaderManager和通过JSR223中的API添加标头-没有帮助 尝试从JMX中删除所有^ M-无济于事 主体形成良好,以\ n作为换行符。

TCP dump

Header manager in JMX

p.s。 JMX本身是在WIN上创建的,但这绝不会导致这种行为(尝试在JVM中创建/替换的已删除^ M。头;在JVM和Linux上运行的JVM中构建主体)

1 个答案:

答案 0 :(得分:0)

是什么让您认为应该在Linux上看到\n?根据{{​​3}}:

  

HTTP / 1.1将序列CR LF定义为所有协议元素实体实体以外的行尾标记(有关允许的应用程序,请参见附录19.3)。实体中的行尾标记由其关联的媒体类型定义,如第3.7节所述。

  CRLF           = CR LF

因此,JMeter的行为是绝对正确的,并且与实际浏览器的行为一致。

HTTP Protocol specification

您的问题必须存在于其他地方,您可以JMeter versus real browser并比较JMeter和实际浏览器发送的请求,识别差异并将JMeter配置修改为100%匹配浏览器发送的请求。

有关手动创建分段上传请求的示例,请参见decrypt your secure traffic using Wireshark