Lỗi không get được body khi push từ php



  • code php của mình
    $data_string = json_encode(array('abc' => 'abc'));
    $ch = curl_init('xxxxxxx/push');
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
    );
    curl_exec($ch);
    nhân nodejs:
    app.use(bodyParser.json())
    app.all('/push', function(req, res) {
    console.log(req.body);
    res.sendfile(__dirname + '/public/success.html');
    });
    curl_close($ch);
    console.log req.body lỗi undefined, pust thì nhận nhưng body lại undefined nhờ anh e giúp
    réquest
    _slaves: [],
    _unref: false,
    allowHalfOpen: true,
    pauseOnConnect: false,
    httpAllowHalfOpen: false,
    timeout: 120000,
    keepAliveTimeout: 5000,
    _pendingResponseData: 0,
    maxHeadersCount: null,
    _connectionKey: '6::::3000',
    [Symbol(asyncId)]: 4 },
    _idleTimeout: 120000,
    _idleNext:
    TimersList {
    _idleNext: [Circular],
    _idlePrev: [Circular],
    _timer: [Object],
    _unrefed: true,
    msecs: 120000,
    nextTick: false },
    _idlePrev:
    TimersList {
    _idleNext: [Circular],
    _idlePrev: [Circular],
    _timer: [Object],
    _unrefed: true,
    msecs: 120000,
    nextTick: false },
    _idleStart: 5916,
    _destroyed: false,
    parser:
    HTTPParser {
    '0': [Function: parserOnHeaders],
    '1': [Function: parserOnHeadersComplete],
    '2': [Function: parserOnBody],
    '3': [Function: parserOnMessageComplete],
    '4': [Function: bound onParserExecute],
    _headers: [],
    _url: '',
    _consumed: true,
    socket: [Circular],
    incoming: [Circular],
    outgoing: null,
    maxHeaderPairs: 2000,
    onIncoming: [Function: bound parserOnIncoming] },
    on: [Function: socketOnWrap],
    _paused: false,
    read: [Function],
    _consuming: true,
    _httpMessage:
    ServerResponse {
    domain: null,
    _events: [Object],
    _eventsCount: 1,
    _maxListeners: undefined,
    output: [],
    outputEncodings: [],
    outputCallbacks: [],
    outputSize: 0,
    writable: true,
    _last: false,
    upgrading: false,
    chunkedEncoding: false,
    shouldKeepAlive: true,
    useChunkedEncodingByDefault: true,
    sendDate: true,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    _contentLength: null,
    _hasBody: true,
    _trailer: '',
    finished: false,
    _headerSent: false,
    socket: [Circular],
    connection: [Circular],
    _header: null,
    _onPendingData: [Function: bound updateOutgoingData],
    _sent100: false,
    _expect_continue: false,
    req: [Circular],
    locals: [Function: locals],
    [Symbol(outHeadersKey)]: [Object] },
    [Symbol(asyncId)]: 8,
    [Symbol(bytesRead)]: 0,
    [Symbol(asyncId)]: 10,
    [Symbol(triggerId)]: 4 },
    _consuming: false,
    _dumped: false,
    originalUrl: '/push',
    _parsedUrl:
    Url {
    protocol: null,
    slashes: null,
    auth: null,
    host: null,
    port: null,
    hostname: null,
    hash: null,
    search: null,
    query: null,
    pathname: '/push',
    path: '/push',
    href: '/push',
    _raw: '/push' },
    query: {},
    res:
    ServerResponse {
    domain: null,
    _events: { finish: [Function: bound resOnFinish] },
    _eventsCount: 1,
    _maxListeners: undefined,
    output: [],
    outputEncodings: [],
    outputCallbacks: [],
    outputSize: 0,
    writable: true,
    _last: false,
    upgrading: false,
    chunkedEncoding: false,
    shouldKeepAlive: true,
    useChunkedEncodingByDefault: true,
    sendDate: true,
    _removedConnection: false,
    _removedContLen: false,
    _removedTE: false,
    _contentLength: null,
    _hasBody: true,
    _trailer: '',
    finished: false,
    _headerSent: false,
    socket:
    Socket {
    connecting: false,
    _hadError: false,
    _handle: [Object],
    _parent: null,
    _host: null,
    _readableState: [Object],
    readable: true,
    domain: null,
    _events: [Object],
    _eventsCount: 10,
    _maxListeners: undefined,
    _writableState: [Object],
    writable: true,
    allowHalfOpen: true,
    _bytesDispatched: 0,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Object],
    _server: [Object],
    _idleTimeout: 120000,
    _idleNext: [Object],
    _idlePrev: [Object],
    _idleStart: 5916,
    _destroyed: false,
    parser: [Object],
    on: [Function: socketOnWrap],
    _paused: false,
    read: [Function],
    _consuming: true,
    _httpMessage: [Circular],
    [Symbol(asyncId)]: 8,
    [Symbol(bytesRead)]: 0,
    [Symbol(asyncId)]: 10,
    [Symbol(triggerId)]: 4 },
    connection:
    Socket {
    connecting: false,
    _hadError: false,
    _handle: [Object],
    _parent: null,
    _host: null,
    _readableState: [Object],
    readable: true,
    domain: null,
    _events: [Object],
    _eventsCount: 10,
    _maxListeners: undefined,
    _writableState: [Object],
    writable: true,
    allowHalfOpen: true,
    _bytesDispatched: 0,
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: [Object],
    _server: [Object],
    _idleTimeout: 120000,
    _idleNext: [Object],
    _idlePrev: [Object],
    _idleStart: 5916,
    _destroyed: false,
    parser: [Object],
    on: [Function: socketOnWrap],
    _paused: false,
    read: [Function],
    _consuming: true,
    _httpMessage: [Circular],
    [Symbol(asyncId)]: 8,
    [Symbol(bytesRead)]: 0,
    [Symbol(asyncId)]: 10,
    [Symbol(triggerId)]: 4 },
    _header: null,
    _onPendingData: [Function: bound updateOutgoingData],
    _sent100: false,
    _expect_continue: false,
    req: [Circular],
    locals: [Function: locals],
    [Symbol(outHeadersKey)]: { 'x-powered-by': [Array] } },
    next: [Function: next],
    _route_index: 0,
    route:
    Route {
    path: '/push',
    method: 'post',
    callbacks: [ [Function] ],
    keys: [],
    regexp: /^/push/?$/i,
    params: [] },
    params: [] }



  • Tùy theo request mà bạn gởi lên server.
    Nếu content-type là application/json. Thì phải add middleware để parse json
    const bodyParser = require('body-parser');

    //app là http server instance
    app.use(bodyParser.json());


Log in to reply