4

我有一个 Koa 应用程序,它的multipart/form-data文件上传突然停止工作。我现在已经花了 8 个多小时试图找出问题所在。我尝试/验证的内容:

  • 不是 Node 6 问题;节点 4(以前可以工作)也会出现同样的问题。
  • 已排除版本问题packages.json;已针对所有相关软件包的原始工作版本和最新版本进行了测试。
  • 在最新的 Chrome 和最新的 Firefox 中发布展览。
  • 当使用与浏览器发送的完全相同的标头直接从 Postman 发布时,问题不会出现(除了CookieReferer,两者都不能在 Postman 中设置)。
  • Koa 包装器koa-better-bodykoa-multer 的问题展示。
  • 直接使用busboy时出现问题,厉害,甚至多方
  • 类似于人们在这个multer 问题上报告的问题;尝试了所有建议(包括在文件参数之前添加字段参数的远景)无济于事。
  • 试图重新创建最小的测试用例来重现,但一直无法。
  • 尝试逐行缩减我的应用程序,针对最小的测试用例检查 Babel 输出,直到它们在功能上相同,问题仍然存在于我的应用程序中,但不在测试用例中。
  • 所有测试都在同一台服务器上运行,使用相同的浏览器。

调试时,问题的最清晰视图是强大的,在incoming_form.js. 发生单个data事件:

在此处输入图像描述

然后是一个abort事件:

在此处输入图像描述

之后,浏览器最终会超时。(该文件大于第一个data事件中接收到的 15 个字节。)

我曾希望通过从 formidabl 切换到 busboy 来快速解决问题,现在我是一个真正的绑定者,因为这个问题需要得到解决,而我已经没有办法解决这个问题了。我试图以我能想到的每一种方式对其进行切片,以我能想到的每一种方式对其进行调试,并且没有编写我自己的多部分解析器(这不是我喜欢的任务),我很快就没有选择了。

有没有人遇到过这个?您对我如何进行调试或生成最小测试用例有任何想法吗?

4

1 回答 1

1

事实证明问题出在koa-proxy上:它不能正确转发多部分 POST 请求。我通过切换到koa-proxy2来修复它,我会考虑为 koa-proxy 项目提供修复。

于 2016-10-31T15:44:10.780 回答