【问题标题】:400 Bad request on Firefox 45.0.1 and Safari 9.1Firefox 45.0.1 和 Safari 9.1 上的 400 错误请求
【发布时间】:2016-04-01 16:16:50
【问题描述】:

我正在尝试通过 jquery ajax 和 FormData 提交具有文本和文件字段的表单。它在 chrome 上运行良好,但在 Firefox 45.0.1 和 Safari 9.1 上收到 400 Bad request。它在 Firefox 44 上运行良好,但是一旦我将它更新到 45.0.1,问题就出现了。我已清除所有内容,包括缓存、cookie 和历史记录,但仍然无法正常工作。

var formData = new FormData($(form)[0]);
$.ajax({
    type: 'POST',
    url: '/api/slab/post/',
    data: formData,
    cache: false,
    contentType: false,
    processData: false,
    beforeSend: function (request) {
        $(".loader, .main-loader-overlay").fadeIn("slow");
    }
});

这就是我的请求和响应标头的样子

【问题讨论】:

    标签: jquery python firefox multipartform-data forms http-post


    【解决方案1】:

    我已经解决了这个问题。如果 File Field 为空,Firefox 和 Safari 不会发送 filename 属性。 在下图中可以清楚地看到,字段名称“post_photo”没有任何属性文件名。

    当我在后端使用 Python Flask 时,如果表单中的任何内容丢失,它会抛出 400 Bad request。 所以它在 chrome 上工作的唯一原因是因为它发送文件字段的 filename 属性,即使它是空的。

    我在后端使用了这个is_file_available = len(request.files.keys()) > 0 来解决我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 2018-04-25
      • 2011-03-09
      • 2017-12-31
      • 2014-10-11
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多