我正在运行一个似乎遇到特定请求问题的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.
我知道以下配置似乎对它有一些影响,但我不知道如何为包含二进制文件的帖子设置值:
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
。
答案 0 :(得分:4)
application/x-www-form-urleconded
不是二进制数据的适当内容类型。 Tomcat认为您已经向其发布了一个表单,并且正在尝试从二进制数据中解析字段的名称和值。您应该使用适合二进制数据的内容类型。 application/octet-stream
是一种选择。