json — NodeJS Oboe не отправляет тело запроса на сервер PHP

Я пытаюсь заставить Гобо посылать некоторые данные с запросом, но, похоже, это не работает. Это мой простой тестовый скрипт, я также включил пример request.js, который отлично работает:

// Doesn't work
var oboe = require('oboe');
oboe({
method: 'POST',
url: 'http://localhost:8440/oboe.php',
body: JSON.stringify({
foo: 'bar',
}),
}).done(function(data) {
console.log('oboe', data);
});

// Works
var request = require('request');
request({
json: true,
method: 'POST',
url: 'http://localhost:8440/oboe.php',
body: JSON.stringify({
foo: 'bar',
}),
}, function(error, response, body) {
console.log('request', body);
});

Это выводит:

$ node test.js
oboe { get: [], post: [], body: '' }
request { get: [], post: [], body: '"{\\"foo\\":\\"bar\\"}"' }

И мой простой PHP-файл для тестирования:

<?php
die(json_encode([
'get' => $_GET,
'post' => $_POST,
'body' => file_get_contents('php://input'),
]));

Я уверен, что делаю что-то не так, но не могу понять, что.

1

Решение

Ладно, думаю, я понял это. Кажется, необходимо отправить Content-Length заголовок.

var data = JSON.stringify({
foo: 'bar',
});
oboe({
method: 'POST',
url: 'http://localhost:8440/oboe.php',
body: data,
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length,
},
}).done(function(data) {
console.log('oboe', data);
});
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]