Nginx - 具有自定义边界的多部分请求失败(CRLF)

时间:2017-04-18 19:03:10

标签: nginx mime-types content-type mime

Nginx - 带有自定义边界(CRLF)的多部分请求失败,而来自RFC的它是完全有效的有效载荷。
示例负载。 MIME版本:1.0 内容类型:multipart / form-data;     边界= ------%^ TestBoundary ^%------ 有多个文件。

首先,标题上的特殊字符导致边界被跳过传递到后端,并添加了ignore_invalid_headers。现在我看到传递给后端的内容类型标题,但添加了一个臭名昭着的“:”。

的multipart / form-data的;边界= ------%^ TestBoundary ^%------的

有什么原因造成这种情况?如何在传递到后端之前在nginx上修复它?

1 个答案:

答案 0 :(得分:0)

这是一个已知的错误,很可能是你的问题,其中“边界”部分使用CRLF和TAB附加到Content-Type字符串: https://forum.nginx.org/read.php?29,192093,192102#msg-192102

如果您无法在代码中修复此问题,那么您需要使用HAProxy或其他类似方法来修复此问题,方法是将CRLF + TAB替换为LWS(请参阅本节中1.2.2部分底部的“重要说明”) {3}})