node js http proxy modify response

在 Node.js 中,您可以使用第三方库或手写代码来实现 HTTP 代理,并修改其响应。

首先,您需要创建一个 HTTP 服务器来作为代理服务器,然后在请求到达时对其进行处理。对于每个请求,您可以通过创建一个 HTTP 请求并将其发送到目标服务器来代理该请求。最后,您可以捕获响应并对其进行修改,然后将其发送回客户端。

以下是一个使用 Node.js 和 http 模块的示例代码:

const http = require('http');
const url = require('url');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
  const proxy = http.request(
      host: 'www.example.com',
      path: req.url,
      method: req.method,
      headers: req.headers
    proxyRes => {
      // Modify the response here
      proxyRes.headers['X-Added-Header'] = 'My value';
      res.writeHead(proxyRes.statusCode, proxyRes.headers);
      proxyRes.pipe(res);
  req.pipe(proxy);
server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);

如果要使用第三方库,例如 http-proxy,您可以使用以下代码:

const http = require('http');
const httpProxy = require('http-proxy');
const hostname = '127.0.0.1';
const port = 3000;
const proxy = httpProxy.createProxyServer({});
const server = http.createServer((req, res) => {
  proxy.web(req, res, { target: 'http://www.example.com' });
proxy.on('proxyRes', (proxyRes, req, res) => {
  // Modify the response here
  proxyRes.headers['X-Added-Header'] = 'My value';
server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);

希望这些代码帮助您实现您的需求。

  • JS 原生面经从初级到高级【近1.5W字】
  •