首页 > 解决方案 > 多部分/表单数据之间的空白问题;& 内容类型标题中的边界

问题描述

我开发了 Spring boot(v1.5.2) rest api 并使用 spring-boot-starter-undertow 嵌入式服务器来运行应用程序。其中一项操作具有上传文件功能(方法 = RequestMethod.POST,消耗 = MediaType.MULTIPART_FORM_DATA_VALUE)。

当使用带有自动生成的标头(如 Content-Type、Content-Length 等)的邮递员进行测试时,该应用程序可以正常工作。

但问题是,客户端/消费者应用程序将 Content-Type 发送为 multipart/form-dat a;b oundary=----xyz---- (在 multipart/form-data; & 边界之间没有空格)和请求因 400 Bad request 而失败,并且没有到达控制器。

但是自动生成的邮递员标题有空格。(multipart/form-dat a; b oundary=----xyz---) 工作正常,当我们覆盖此标头以具有该空格时,它也无法在邮递员中工作。所以问题在于 Content-Type 的模式。

我尝试过的几件事是,我添加了过滤器并覆盖了 HttpServletRequestWrapper 以在请求到达控制器之前修改内容类型标头,但解决方案不起作用。我也尝试过 AOP,但没有 setHeader 方法来设置/更新请求标头。

您能否分享您在不接触消费者应用程序的情况下如何在服务器应用程序(生产者)中处理这种情况的经验或想法。

标签: javaspringmultipartform-datacontent-typeundertow

解决方案


我仍然无法弄清楚 undertow 的问题/根本原因,但是当我将嵌入式服务器更改为 spring-boot-starter-jetty 时,我的请求在 multipart/form-data 之间有/没有空格;& 内容类型的边界工作正常。


推荐阅读