【问题标题】:Nginx returns 400 error in SafariNginx 在 Safari 中返回 400 错误
【发布时间】:2018-08-14 20:41:51
【问题描述】:

我正在尝试使用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

【问题讨论】:

  • 您使用的是自签名证书吗?你能透露端点配置吗?
  • 没有。我发现了一个问题。问题是提交没有文件的表单

标签: ajax nginx safari axios nuxt.js


【解决方案1】:

这实际上是 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,但您可以将此逻辑调整到任何库。

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-23
    • 2019-07-11
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多