Да ... это с моей головы. Обратите внимание, что я проксирую к порту 80, так как большинство веб-сайтов работают на порту 80. Измените код для вашего конкретного случая использования. Это в CoffeeScript.
Заголовки запроса журнала:
fs = require('fs')
httpProxy = require('http-proxy')
fsw = fs.createWriteStream('myfile.txt', flags: 'a', mode: 0666, encoding: 'utf8')
server = httpProxy.createServer (req, res, proxy) ->
req.connection.pipe(fsw) #runs in parallel with the proxy... don't you love Node.js?
proxy.proxyRequest(req, res, {
host: require('url').parse(req.url).hostname,
port: 80
})
server.listen(8080)
JS Translation
Поставьте localhost и порт 8080 для прокси вашего браузера. Это работает для вас?
Тело запроса журнала:
fs = require('fs')
httpProxy = require('http-proxy')
server = httpProxy.createServer (req, res, proxy) ->
body = ''
req.on 'data', (chunk) ->
body += chunk
req.on 'end', ->
fs.writeFile('mybody.txt', body, 'utf8')
proxy.proxyRequest(req, res, {
host: require('url').parse(req.url).hostname,
port: 80
})
server.listen(8080)
Я проверил это и могу подтвердить, что он регистрирует тело сообщения POST / PUT.
Тело ответа журнала:
fsw = fs.createWriteStream('myfile.txt', flags: 'a', mode: 0666, encoding: 'utf8')
server = httpProxy.createServer (req, res, proxy) ->
oldwrite = res.write
res.write = (data, encoding, fd) ->
fsw.write(data)
res.write = oldwrite
res.write(data, encoding, fd)
res.write = oldwrite #<--- patch again before we leave the method
proxy.proxyRequest(req, res, {
host: require('url').parse(req.url).hostname,
port: 80
})
server.listen(8080)
Возможно, это не самый чистый способ, но я могу подтвердить, что он работает.