Тело экспресс-запроса / запрос пусты
Я прочитал почти все сообщения, которые я мог найти по этому вопросу, и они не решили мою проблему.
Я имею:
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
});