Загрузка изображений с ajax и nodejs с использованием Formdata - ошибка CORS - PullRequest
0 голосов
/ 12 апреля 2020

Я использую vanilla javascript (AJAX) для отправки формы и использую Formdata (). Отправка формы фиксируется nodejs и подключается к базе данных.

Проблема заключается в том, что при отправке обычных данных на nodejs я могу подключиться к базе данных и ответить как успешный. Но пока я добавляю вход для загрузки файла (для сохранения пути к файлу) и пытаюсь подключиться, появляется ошибка CORS. Я установил заголовок для разрешения перекрестного происхождения как * значение в express (nodejs).

HTML:

          <div class="form-group">
            <label for="textareaLbl2">Description 2</label>
            <textarea  name="descr2" class="form-control" id="textareaLbl2" rows="3"></textarea>
          </div>
          <div class="form-group">
            <label for="img">Upload:</label>
            <input type="file" name="img" class="form-control" id="img" />
          </div>

JS:

testForms.onsubmit = function(event) {
    event.preventDefault();
    var formData = new FormData(testForms);
    request.open( "POST", "https://xyz.domain.com/addList", true);
    request.send(formData);
}

Nodejs:

app.use(function (req, res, next) {
    // Website you wish to allow to connect
    res.setHeader('Access-Control-Allow-Origin', '*');

    // Request methods you wish to allow
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

    // Request headers you wish to allow
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

1 Ответ

0 голосов
/ 12 апреля 2020

Это работает? Если вы не пробовали промежуточное программное обеспечение Cors: https://www.npmjs.com/package/cors

 app.use(function (req, res, next) {

    // Website you wish to allow to connect
    res.setHeader('Access-Control-Allow-Origin', '*');

    // Request methods you wish to allow
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

    // Request headers you wish to allow
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

    // Set to true if you need the website to include cookies in the requests sent
    // to the API (e.g. in case you use sessions)
    res.setHeader('Access-Control-Allow-Credentials', true);

    // Pass to next layer of middleware
    next();
});

Также попробуйте установить Content-Type на стороне узла.

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