当前位置: 首页 > 知识库问答 >
问题:

多部分/表单数据之间的空白问题;Content-Type标头中的边界(&B)

常永长
2023-03-14

我已经开发了Spring boot(V1.5.2)rest api,并使用spring-boot-starter-undertow嵌入式服务器来运行应用程序。其中一个操作具有上传文件特性(方法=RequestMethod.Post,消耗=MediaType.Multipart_Form_Data_Value)。

在使用postman测试自动生成的头(如Content-Type、Content-Length等)时,应用程序的工作正常。

但问题是,客户机/消费者应用程序将内容类型作为multipart/form-data;boundary=-----xyz---(multipart/form-data;&boundary)发送,而请求失败,有400个坏请求,它没有到达控制器。

但自动生成的邮递员标头有空白。(multipart/form-data;boundary=----xyz---),它工作得很好,而当我们重写这个头以使其具有空格时,它在postman中也不起作用。所以问题在于内容类型的模式

我尝试过的很少,我添加了过滤器并重写了HttpServletRequestWrapper以在请求到达控制器之前修改content-type头,但解决方案并不奏效。我也尝试过AOP,但是没有setHeader方法来设置/更新请求头。

能否请您分享您的经验或想法,如何在服务器应用程序(生产者)中处理这种场景,而不触及消费者应用程序。

共有1个答案

白阳煦
2023-03-14

我仍然无法用undertow找出问题/根本原因,但是当我将嵌入式服务器更改为spring-boot-starter-jetty时,我的请求在multipart/form-data之间包含/不包含空白;content-type中的&boundary工作良好。

 类似资料:
  • 没有边界的多部分/表单数据请求是否有效?根据规范,当有超过1个部分时,使用边界将它们分开(并且该边界不应该是身体的一部分)。我有一个请求,其中有一个单一的主体作为原始内容或文件,在内容类型中,我们传递“多部分/表单数据”。这种要求实际上有效吗?

  • 我正在使用OkHttp3创建一个多部分请求体。以下是工作curl请求。 删除,会从我们的Spring Boot服务器产生错误。 不支持内容类型“应用程序/八位字节流”。 所以很明显,我应该为指定Json类型。让我们使用OkHttp创建请求。 这产生了与上述相同的错误。因此我更改了代码如下。 现在,OkHttp请求生成器抛出了这个错误。 意外标头:Content-Type 使用空标头,创建请求正文,

  • 谢谢你过来。 我想使用fetch api发送一个作为请求的 手术看起来像这样 这里的问题是边界,比如 永远不要将其放入标题中 应该是这样的 当您使用尝试“相同”操作时,如下所示 标题设置正确 所以我的问题是, > 在这种情况下,我如何使的行为完全像? 如果这不可能,为什么? 谢谢大家!这个社区或多或少是我职业成功的原因。

  • 我正在使用HttpWebRequest发布到MMS API。文章正文包含有关传递和彩信的XML数据,作为需要Base64编码的MIME多部分附件。 帖子是成功的,但我只收到文字,而不是图像。 查看我的代码时,它似乎构建了表单数据,但当我将其转换回字符串时,文件数据丢失了。 str变量的内容: ------------f2de17263b724d5a919b14a6834c489f内容配置:表单数据

  • 我试图使用WebClient(spring web 5.2.9.RELEASE)发送POST多部分请求,但它缺少API所需的“内容长度”头。 是否可以将WebClient配置为包含MultipartTTpMessageWriter的“Content Length”头,该头用于使用multipart/form数据媒体类型写入请求? 我以这种方式发送请求:

  • 我很难使用Axios表单数据进行反应式本地文件上传。我将内容类型设置为多部分/表单数据。下面是我的请求部分。 表单数据体内容 {"_parts":[["profileImage ",{ " name ":" rn _ image _ picker _ lib _ temp _ 51ee 6068-2b4b-4baf-a6 C3-44 b 14 b 0 b5 b9b . jpg "," type":