-
Notifications
You must be signed in to change notification settings - Fork 9.2k
Description
It seems that in 3.1, we expanded the use of the Encoding Object's style/explode/ allowReserved fields to multipart/form-data, when previously they only applied to application/x-www-form-urlencoded. This was done in PR #2066.
However, these fields are based on RFC6570 and apply URI percent-encoding to both the names and the values of form fields. While it's clear enough how to convert from the name=value&name=value to putting names in the Content-Disposition and values in the part bodies, it is rarely the case that percent-encoding is appropriate. But we do not call attention to that.
Currently (3.1.1) the only thing we say about this is in Appendix E.2, where we note that:
The
form-datamedia type allows arbitrary text or binary data in its parts, so percent-encoding is not needed and is likely to cause interoperability problems unless theContent-Typeof the part is defined to require it.
But we do not point out that style automatically applies percent-encoding.
What was the intention here? AFAICT, you would almost never want to use these fields unless you are doing something very specific that was guaranteed to not trigger any percent-encoding. It's not even entirely clear to me how binary parts would work.
I feel like we should give some implementation guidance here, but my personal advice would be "don't, this is a footgun you don't want to touch."