多部分的HTTP标头内容类型:真的允许CRLF吗?

问题描述 投票:0回答:1

我们正在托管一些能够接收 HTTP Post 请求的 SAP 服务器。 现在我们有一些客户端应用程序愿意 POST 一些多部分数据,但它失败了,因为服务器拒绝 HTTP 400 错误请求。

经过一番调查,原因似乎是客户端应用程序发送内容类型标头,如下所示:

Content-Type: multipart/mixed
boundary="----=_Part_161608_2058542758.1711354500700"

我要求客户端应用程序不要在标头中间进行任何换行(CRLF),他们拒绝引用此处的规范:https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html

我仍然想知道是否真的允许在内容类型或任何其他标头中进行换行?

与此同时,我还测试了一些公开可用的 http 服务器(webhook.site、httpbin.org、pipedream.com),如果我发送带换行符的内容类型字段,所有这些服务器也会响应 http 400 错误请求。

http content-type
1个回答
0
投票

这是一个非常旧的规范,但它也是不正确的。这里的 Content-Type 标头是 HTTP 信封的一部分(即使主体是多部分主体),因此正确的引用是 HTTP 规范。

在 HTTP 规范中的某个时候,允许像这样折叠行,但至少以下行应该以空格开头。

但是,这不再被允许,并且 HTTP 规范明确规定应使用 400 Bad Request 拒绝这些请求:

https://www.rfc-editor.org/rfc/rfc9112#name-obsolete-line-folding

所以你是对的,这是一个行为不良的客户端,不符合 HTTP 规范。他们应该解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.