Jmeter 的 HeaderManager 在 Linux 上使用 \r\n
Jmeter's HeaderManager use \r\n on Linux
我面临以下问题。能有人body指点一下吗?
我有一个 Jmeter 场景,通过原始多部分 POST 模拟文件上传。 (不使用 Jmeter 的默认 'Use multipart/form-data for POST'。只需自己构建 POST)。
方案在 WIN 上运行良好。但是,当我 运行 它在 Linux 上时它失败了。
我得到的是"Invalid multipart payload format"
这是 HTTPS,所以我无法使用 tcpdump 检查负载(这可能是可能的,只是不知道如何...)
无论如何,我只是将原始 URL 更改为一些 non-secure,只是为了查看有效载荷。
我发现那里很奇怪——所有 header 都以 \r\n 结尾,而消息使用 \n 作为换行符(这是正确的,因为它是 Linux)。
有没有想过为什么 Jmeter 为所有 header 添加 \r\n?目前我无法 运行 来自 Linux 的请求,因为 header 和 body 之间的边界似乎彼此不匹配。
尝试在 JSR223 中通过 HeaderManager 和 API 添加 headers - 没有帮助
尝试从 JMX 中删除所有 ^M - 没有帮助
Body 格式很好,用 \n 作为换行符。
p.s。 JMX 本身是在 WIN 上创建的,但这绝不能导致这种行为(尝试在 JVM 中删除 ^M.headers created/replaced;body 是在 JVM 中构建的,而 JVM 运行宁 Linux)
是什么让您认为应该在 Linux 上看到 \n
?根据 HTTP Protocol specification:
HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all protocol elements except the entity-body (see appendix 19.3 for tolerant applications). The end-of-line marker within an entity-body is defined by its associated media type, as described in section 3.7.
CRLF = CR LF
所以 JMeter 的行为是绝对正确的,并且与真实浏览器的行为一致。
您的问题一定存在于其他地方,您可以 decrypt your secure traffic using Wireshark 比较 JMeter 和真实浏览器发送的请求,找出差异并修改 JMeter 配置以 100% 匹配浏览器发送的请求。
有关手动创建分段上传请求的示例,请参见Testing REST API File Uploads in JMeter
我面临以下问题。能有人body指点一下吗?
我有一个 Jmeter 场景,通过原始多部分 POST 模拟文件上传。 (不使用 Jmeter 的默认 'Use multipart/form-data for POST'。只需自己构建 POST)。
方案在 WIN 上运行良好。但是,当我 运行 它在 Linux 上时它失败了。 我得到的是"Invalid multipart payload format"
这是 HTTPS,所以我无法使用 tcpdump 检查负载(这可能是可能的,只是不知道如何...) 无论如何,我只是将原始 URL 更改为一些 non-secure,只是为了查看有效载荷。 我发现那里很奇怪——所有 header 都以 \r\n 结尾,而消息使用 \n 作为换行符(这是正确的,因为它是 Linux)。
有没有想过为什么 Jmeter 为所有 header 添加 \r\n?目前我无法 运行 来自 Linux 的请求,因为 header 和 body 之间的边界似乎彼此不匹配。
尝试在 JSR223 中通过 HeaderManager 和 API 添加 headers - 没有帮助 尝试从 JMX 中删除所有 ^M - 没有帮助 Body 格式很好,用 \n 作为换行符。
p.s。 JMX 本身是在 WIN 上创建的,但这绝不能导致这种行为(尝试在 JVM 中删除 ^M.headers created/replaced;body 是在 JVM 中构建的,而 JVM 运行宁 Linux)
是什么让您认为应该在 Linux 上看到 \n
?根据 HTTP Protocol specification:
HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all protocol elements except the entity-body (see appendix 19.3 for tolerant applications). The end-of-line marker within an entity-body is defined by its associated media type, as described in section 3.7.
CRLF = CR LF
所以 JMeter 的行为是绝对正确的,并且与真实浏览器的行为一致。
您的问题一定存在于其他地方,您可以 decrypt your secure traffic using Wireshark 比较 JMeter 和真实浏览器发送的请求,找出差异并修改 JMeter 配置以 100% 匹配浏览器发送的请求。
有关手动创建分段上传请求的示例,请参见Testing REST API File Uploads in JMeter