Nginx returns Safari 中的 400 错误
Nginx returns 400 error in Safari
我正在尝试使用 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
这实际上是 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 依赖,但您可以将此逻辑调整为任何库。
我正在尝试使用 Content-type: multipart/form-data
发送表单。在 Chrome、FF、Edge 中一切正常,但在 Safari 中却不行。它从 nginx
用过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
这实际上是 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 依赖,但您可以将此逻辑调整为任何库。