Nginx在Safari中返回400错误

时间:2018-08-14 20:41:51

标签: ajax nginx safari axios nuxt.js

我正在尝试使用Content-type: multipart/form-data发送表单。在Chrome,FF,Edge上一切正常,但在Safari中无法正常工作。它从nginx得到400

使用过Laravel + Nuxtjs + Axios

在nginx conf中启用error_log调试后,我看到

[info] 11687#11687: *1 client prematurely closed stream: only 767 out of 907 bytes of request body received

1 个答案:

答案 0 :(得分:5)

这实际上是Safari上的错误。截至WebKit build r230963,此问题已修复,但Safari尚未更新。如果要保持兼容的行为,则需要从axios请求中发送的表单数据中删除为空的文件字段。

类似:

$('#myForm').find("input[type='file']").each(function(){
   if ($(this).get(0).files.length === 0) {$(this).remove();}
});
var fData = new FormData($('#myForm')[0]);

此解决方案取决于jQuery,但是您可以将此逻辑应用于任何库。