Spring - POST 二进制文件 - 字符解码失败

Spring - POST with binary file - Character decoding failed

我是 运行 一个 spring-boot 应用程序,似乎在处理特定请求时遇到问题。该请求是一个包含二进制数据的 POST,但是,当 JavaServlet(或 tomcat?)接收到它时,它不知道如何对其进行解码,因此会产生以下错误:

org.apache.tomcat.util.http.Parameters   : Character decoding failed. Parameter [0  *H÷
          0 UUS1#0!U
S§¥ø§'ôZúöf¿(å_Ý«"õéñ¤åyl¢Ýg0izt¡÷~ÅüvDt¿Äû¨Ë åt@òÔÊdJRBq%2¶ úFsX] with value [] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values.

我知道以下配置似乎对它有一些影响,但我不知道要为包含二进制文件的 post 设置什么值:

server.tomcat.uri-encoding=UTF-8 #I've also tried UTF-16

感谢您的宝贵时间。

编辑(答案): 您可以使用具有以下配置的 apache 代理来解决此问题:

<Location /endpoint/>
    ProxyPass https://127.0.0.1:443/endpoint/
    RequestHeader unset Content-Type
    RequestHeader set Content-Type "application/octet-stream"
</Location>

取消设置 Content-Type 是可选的,我相信设置应该覆盖。但是,我不是 100% 该字段不区分大小写。也可以添加RequestHeader unset content-type

application/x-www-form-urleconded 不是适合二进制数据的内容类型。 Tomcat 认为您已向其提交了一个表单,并试图从二进制数据中解析字段的名称和值。您应该使用适合二进制数据的内容类型。 application/octet-stream 是一种选择。