POST-запрос работает в Postman, но выдает Bad Request в js-коде - PullRequest
0 голосов
/ 21 июня 2019

Я размещаю код Python на локальном сервере с Flask и пытаюсь отправить POST-запрос с изображением. С почтальоном все отлично работает: enter image description here

Нет дополнительных заголовков, кроме Content-Type (без авторизации).

Тот же запрос внутри функции javascript возвращает 400 (неверный запрос).

    var form = new FormData();
    form.append("image", "image089.png");

    var settings = {
      "async": true,
      "crossDomain": true,
      "url": "http://127.0.0.1:5000/croprect",
      "method": "POST",
      "processData": false,
      "contentType": false,
      "mimeType": "multipart/form-data",
      "data": form
    }

    $.ajax(settings).done(function (response) {
      console.log(response);
    });

Файл "image089.png" находится в том же каталоге, что и скрипт. Эта функция переносится событием щелчка и назначается кнопке. Веб-приложение размещается локально на сервере Tomcat. Я не уверен, какая другая информация будет полезна.

Я нашел много похожих вопросов, но большинство без ответа ..

РЕДАКТИРОВАТЬ: Использование синтаксиса XHR также не работает:

    var xhr = new XMLHttpRequest();
    xhr.withCredentials = true;

    xhr.addEventListener("readystatechange", function () {
      if (this.readyState === 4) {
        console.log(this.responseText);
      }
    });

    xhr.open("POST", "http://127.0.0.1:5000/croprect");

    xhr.send(data);

1 Ответ

0 голосов
/ 21 июня 2019

Вы не добавляете объект FormData правильно. В настоящее время вы устанавливаете значение image в строку. Скорее вам нужно будет указать FormData, чтобы прикрепить содержимое файла с именем, содержащимся в этой строке:

Существует две версии этого метода: два и три параметра версия:

1| formData.append(name, value); 2| formData.append(name, value, filename);

Изменение

form.append("image", "image089.png");

К

form.append("image", BlobWithYourImage, "image089.png");

Также обратите внимание на это предупреждение:

Если вы указываете Blob в качестве данных для добавления к объекту FormData, имя файла, которое будет сообщено на сервер в Заголовок «Content-Disposition» используется для разных браузеров.

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...