Nginx - 带有自定义边界(CRLF)的多部分请求失败,而来自RFC的它是完全有效的有效载荷。
示例负载。
MIME版本:1.0
内容类型:multipart / form-data;
边界= ------%^ TestBoundary ^%------
有多个文件。
首先,标题上的特殊字符导致边界被跳过传递到后端,并添加了ignore_invalid_headers。现在我看到传递给后端的内容类型标题,但添加了一个臭名昭着的“:”。
的multipart / form-data的;边界= ------%^ TestBoundary ^%------的:
有什么原因造成这种情况?如何在传递到后端之前在nginx上修复它?
答案 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}})