New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@squarecloud/http-proxy

Package Overview
Dependencies
Maintainers
0
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@squarecloud/http-proxy

A Zero-Dependency Full-Featured HTTP and WebSocket Proxy for Node.js.

  • 1.2.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
26
decreased by-3.7%
Maintainers
0
Weekly downloads
 
Created
Source

@squarecloud/http-proxy

npm version npm downloads bundle

A Full-Featured HTTP and WebSocket Proxy for Node.js forked from http-party/node-http-proxy.

This fork adds the following features:

  • Dependencies updates & security fixes.
  • Websocket close before response fixed.
  • Memory leak fixed when client closes prematurely.
  • Add support for Lookup option. Remove old followRedirects option.
  • Support for modifying content of websocket streams.
  • Respect NODE_TLS_REJECT_UNAUTHORIZED environment variable.
  • Fix for issues when using an Agent, fix the type error when req.socket is undefined.
  • Fixed bug when http:/ isn't replaced with: http://
  • Fixed X-Forwarded-* not capitalized.

Inspired by the project Ambassify project.

Usage

Install package:

# npm
npm install @squarecloud/http-proxy

# yarn
yarn add @squarecloud/http-proxy

# pnpm
pnpm install @squarecloud/http-proxy

# bun
bun install @squarecloud/http-proxy

Create proxy:

const { createServer } = require("node:http");
const { createProxyServer } = require("@squarecloud/http-proxy");

const proxy = createProxyServer({});
const target = "http://example.com"; /* address of your proxy server here */

const server = createServer(async (req, res) => {
  try {
    await proxy.web(req, res, { target });
  } catch (error) {
    console.error(error);
    res.statusCode = 500;
    res.end("Proxy error: " + error.toString());
  }
});

server.listen(80, () => console.log("Proxy is listening on http://localhost"));

Example with WebSocket:

const { createServer } = require("node:http");
const { createProxyServer } = require("@squarecloud/http-proxy");

const proxy = createProxyServer({ ws: true });
const target = "ws://example.com"; /* address of your proxy server here */

const server = createServer(async (req, res) => {
  /* ... */
});

server.on("upgrade", async (req, socket, head) => {
  try {
    // use proxy.ws() instead of proxy.web() for proxying WebSocket requests.
    await proxy.ws(req, socket, head, { target });
  } catch (error) {
    console.error(error);
    socket.end();
  }
});

server.listen(80, () => console.log("Proxy is listening on http://localhost"));

Some options:

// Options most used in the proxy configuration:
// * ws     : <true/false, if you want to proxy websockets>
// * xfwd   : <true/false, adds X-Forward headers>
// * secure : <true/false, verify SSL certificate>
// * prependPath: <true/false, Default: true - specify whether you want to prepend the target"s path to the proxy path>
// * ignorePath: <true/false, Default: false - specify whether you want to ignore the proxy path of the incoming request>
// * proxyTimeoutCustomError: true/false, default: false - specify whether you want to throw a custom `ETIMEDOUT` error when the `proxyTimeout` is reached. If false then the default `ECONNRESET` error will be thrown.

Checkout http-party/node-http-proxy for more options and examples.

Development

  • Clone this repository
  • Install latest LTS version of Node.js
  • Install dependencies using npm install
  • Run interactive tests using npm run test

License

Published under MIT License.

Made with 💙 & Supported by Square Cloud | A hosting company.

FAQs

Package last updated on 24 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc