Simple HTTP Request Forwarder
http-forward is a minimalist Node.js library designed to proxy incoming HTTP requests to a specified target URL. It functions by attaching a `target` property to the `req.forward` object, allowing for basic request redirection within a Node.js `http.createServer` instance. This package is extremely lightweight and relies solely on Node.js's built-in `http` module. However, with its last publish date over ten years ago (version 0.1.3) and no apparent ongoing development, it is considered abandoned. It does not support modern JavaScript module syntax (ESM), HTTP/2, or contemporary security practices, and has no release cadence. Users are strongly advised to consider actively maintained and more feature-rich alternatives such as `http-proxy` or `http-proxy-middleware` for any new or existing projects requiring HTTP proxying in Node.js.
Common errors
-
ERR_REQUIRE_ESM
cause Attempting to import `http-forward` using ES module syntax (`import forward from 'http-forward';`) in a Node.js environment configured for ESM.fixThis package is CommonJS-only. You must use `const forward = require('http-forward');` to import it. Alternatively, configure your project to run as CommonJS or migrate to a modern proxy library that supports ESM. -
Error: read ECONNRESET
cause This error can occur with older Node.js modules when handling connections, especially under load or with modern client/server interactions, indicating a connection abruptly closed. It's often a symptom of incompatibility or unhandled edge cases in an unmaintained library.fixWhile specific fixes vary, common workarounds involve ensuring Node.js environment compatibility (which is hard for an ancient library) or, more reliably, migrating to a robust, actively maintained proxy solution that handles connection management more resiliently.
Warnings
- breaking The `http-forward` package is abandoned and has not been updated in over ten years. It should not be used in production environments due to potential unpatched security vulnerabilities and incompatibility with modern Node.js versions and features.
- gotcha This package is CommonJS-only and relies on `require()` statements. It does not support ES Modules (`import`/`export`) or modern JavaScript bundling techniques, which can lead to compatibility issues in contemporary Node.js projects.
- gotcha Due to its age, `http-forward` lacks support for modern web protocols like HTTP/2 and advanced proxy features such as WebSocket forwarding, SSL/TLS termination at the proxy, or sophisticated routing rules.
Install
-
npm install http-forward -
yarn add http-forward -
pnpm add http-forward
Imports
- forward
import forward from 'http-forward'
const forward = require('http-forward')
Quickstart
const http = require('http');
const forward = require('http-forward');
// A basic target server to forward requests to
const targetServer = http.createServer((req, res) => {
console.log(`Target server received: ${req.method} ${req.url}`);
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello from the target server!');
});
targetServer.listen(9000, () => {
console.log('Target server listening on port 9000');
});
// The proxy server that uses http-forward
const proxyServer = http.createServer((req, res) => {
console.log(`Proxy server received: ${req.method} ${req.url}`);
// Define the target for http-forward
req.forward = { target: 'http://localhost:9000' };
forward(req, res, (err) => {
if (err) {
console.error('Proxy error:', err.message);
res.writeHead(500, { 'Content-Type': 'text/plain' });
res.end('Proxy Error');
}
});
});
proxyServer.listen(3000, () => {
console.log('Proxy server listening on port 3000. Try curl http://localhost:3000');
});