node.js - 带有 Multipart/form-data 的 PUT 请求仅在 Firefox 中失败
问题描述
我已经在 Edge、Chrome 和 Opera 上尝试过,我的上传工作正常,问题只发生在 Firefox 上:
从前端,我发送一个 multipart/form-data 请求,如下所示:
$.ajax({
url: `/api/myUpdate/${$scope._id}`,
method: 'PUT',
data:formData,
contentType:false,
processData:false,
cache:false,
success: response =>{
..
},
error: err =>{
..
}
})
然后在我的 nodeJs 服务器上:
路线:
var multiparty = require('connect-multiparty');
var multipartyMiddleware = multiparty({maxFieldsSize:'200mb'});
app.route('/api/myUpdate/:_id')
.post(users.requiresLogin, multipartyMiddleware, hasAuthorization, myUpdateFn);
调试时,我通过了我的 requireslogin 中间件,但它卡在了 multipartyMiddleware 中,它永远不会达到“hasAuthorization”或“myUpdateFn”。
当请求超时时,我在服务器上收到此输出错误
Error: Request aborted
at IncomingMessage.onReqAborted (C:\dev\eedweb\node_modules\multiparty\index.js:190:17)
at IncomingMessage.emit (events.js:182:13)
at abortIncoming (_http_server.js:449:9)
at socketOnClose (_http_server.js:442:3)
at Socket.emit (events.js:187:15)
at TCP._handle.close (net.js:610:12)
从我所做的调试来看,它似乎卡在了一个名为“async_hooks”的文件中......但我真的不明白它到底做了什么。
我尝试了不同的上传大小,但似乎并不影响结果。
前端没有错误消息,Firefox 检查器只显示网络选项卡中的标题,但 formdata 对象在浏览器中似乎是相同的,当我检查节点服务器中的对象时似乎是消息正文、参数、文件等。firefox 似乎没有在网络检查器中显示它。
难道我做错了什么?
解决方案
推荐阅读
- jquery - 将数字字符串中的第一个数字限制为 2 到 9
- python - 求解正整数系数的线性向量加法
- python-3.x - pandas.Series.append() 将新值添加为额外列,而不是将其附加到系列的末尾
- python - 如何制作切换按钮
- oracle - 我的 Unpivot 查询结果的列不是我想要的
- python - 如何注释Seaborn中不包括异常值的箱形图的最小值?
- apache-flink - 为事件时间间隔连接找到多个行时间字段
- html - 如何在元素之间添加垂直间距在移动视图上?
- python - 从数据中的两个变量中可视化特定信息
- r - 有什么方法可以让变量按 group_by 分组?