Тело экспресс-запроса / запрос пусты

Я прочитал почти все сообщения, которые я мог найти по этому вопросу, и они не решили мою проблему.

Я имею:

var cors = require('./cors.js');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
  • У меня есть CORS, настроенный для разрешения запросов.
  • Я отправляю свои POST-запросы с 'Content-Type': 'application/json'

Все же объект запроса моего маршрута все еще пуст.

Это нормально работает, если я отправляю свои данные через параметры, но я бы действительно предпочел использовать тело.

Код заявки:

data = {
    "url": "./text file name.txt",
    "body": "test content"
};

$.ajax({
    'type': 'POST',
    'Content-Type': 'application/json',
    'url': 'http://localhost:3000/save',
    'body': JSON.stringify(data),
    'success': function( response ){
        console.log( 'SUCCESS >>> ', response);
    },
    'error': function(error){
        console.log( 'ERROR >>> ', error.responseText );
    }
});

Маршрут:

app.post('/save', function(request, response) {
    console.log( 'Save Req >> ', request.url, request.body, request.query );
    // outputs: "Save Req >>  /save {} {}"
});

CORS: (cors.js)

module.exports = function() {
  return function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    next();
  };
}

1 ответ

Решение

Согласно $.ajax данные в теле передаются в data, не в body, Как это

$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
}); 
Другие вопросы по тегам