Изменить тип содержимого в заголовках запроса

Я должен отправить данные из приложения на сервер, и метод post из этого приложения сделан с использованием типа контента как application/json но это простой текст. Я не могу обновить приложение, чтобы изменить этот заголовок сейчас. Текущее приложение работает, когда данные достигают PHP напрямую, а PHP не анализирует входящие данные, которые определены как json.

import express from 'express'
var http = require('http')
const redirectionRoutes = express.Router()

redirectionRoutes.use(function(req, res, next) {
  req.rawBody = ''
  req.headers['content-type'] = 'text/plain'

  req.on('data', function(chunk) {
    req.rawBody += chunk
  })

  req.on('end', function() {
    next()
  })
})

redirectionRoutes.post(/^\/update_services\/.*$/, function(request, response) {
    var data = request.rawBody
    var dataLength = data.length
    var options = {
        hostname: 'localhost',
        port: 80,
        path: request.path,
        method: 'POST',
        json: false,
        headers: {
        'Content-Type': 'text/plain',
        'Content-Length': dataLength
        }
    }

    var buffer = ''
    var req = http.request(options, function(res) {
        res.on('data', function(chunk) {
        buffer += chunk
        })
        res.on('end', function() {
        response.send(buffer)
        })
    })
    req.write(data)
    req.end()
})

Но в nodejs(мое приложение), поскольку тип содержимого указан как json, анализатор тела выполняет синтаксический анализ данных, и, поскольку это не json, я получаю ошибку:

SyntaxError: неожиданный токен # в JSON в позиции 0

at JSON.parse (<anonymous>)
at createStrictSyntaxError (../node_modules/body-parser/lib/types/json.js:157:10)
at parse (../node_modules/body-parser/lib/types/json.js:83:15)
at /Users/../node_modules/body-parser/lib/read.js:116:18
at invokeCallback (/Users/../node_modules/body-parser/node_modules/raw-body/index.js:224:16)
at done (/Users/../node_modules/body-parser/node_modules/raw-body/index.js:213:7)
at IncomingMessage.onEnd (/Users/../node_modules/body-parser/node_modules/raw-body/index.js:273:7)
at emitNone (events.js:105:13)
at IncomingMessage.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1047:12)

Есть ли в nodejs/body parser способ не анализировать этот входящий json и позволить ему войти в функцию как обычный текст.

1 ответ

Это решено!! Я экспортирую этот модуль в конце кода приложения вместе с другими страницами маршрутизаторов. Итак, body-parser, вызываемый в предыдущих библиотеках, вызывается, если я не использовал этот конкретный маршрутизатор.

Другие вопросы по тегам