Description
Expected behavior
HTTP Header
Content-Type: multipart/form-data; boundary=2W1aSJ1TtJC_jRaGnbotI-RaHchFMAO
Actual behavior
HTTP Header
Content-Type: multipart/form-data; boundary=2W1aSJ1TtJC_jRaGnbotI-RaHchFMAO; charset=UTF-8
Steps to reproduce the problem
In JMeter 5.6.3, the request header Content-Type
for multipart/form-data
is required to include ; charset=
.
On some web server implementations, including charset
in the request header Content-Type
of multipart/form-data
can result in parsing errors of the boundary
, leading to a failure in sending form content.
Example 1: spring-projects/spring-framework#21599
Example 2: https://bz.apache.org/bugzilla/show_bug.cgi?id=61384
According to the latest RFC specifications, such implementations are incorrect:
In RFC 2046 [4.1.2] :
- For text and its subtypes (e.g.,
text/plain
), thecharset
parameter should be passed in theContent-Type
. - i.e., The HTTP body is entirely composed of characters specified in the charset.
multipart/form-data
does not belong to the text
subtype, and the HTTP body may contain both text and binary data.
In RFC 7578 [5.1.2], rules for form encoding (form-charset
) are defined:
- If
multipart/form-data
specifies a charset, it should be located in the HTTP body rather than the HTTP header. - If charset is not specified for
multipart/form-data
, UTF-8 is used by default.
Therefore, HTTP headers like the following are non-compliant with the specification (and cause errors in some web server behaviors):
Content-Type: multipart/form-data; boundary=2W1aSJ1TtJC_jRaGnbotI-RaHchFMAO; charset=UTF-8
Interestingly, this HTTP header is also non-compliant with the specification (but doesn't cause errors as it lacks a boundary):
Content-type: application/json; charset=utf-8
I am not yet familiar with JMeter. If my idea is wrong, please remind me and close this issue.
Thank you.
JMeter Version
5.6.3
Java Version
17
OS Version
No response