Socket
Socket
Sign inDemoInstall

http-parser-js

Package Overview
Dependencies
0
Maintainers
2
Versions
30
Alerts
File Explorer

Advanced tools

Install Socket

Protect your apps from supply chain attacks

Install

http-parser-js

A pure JS HTTP parser for node.

    0.5.8latest
    GitHub
    npm

Version published
Maintainers
2
Weekly downloads
13,983,206
increased by3.21%

Weekly downloads

Package description

What is http-parser-js?

The http-parser-js npm package is a pure JavaScript implementation of the HTTP parsing component of Node.js. It can be used as a drop-in replacement for the built-in http parser in Node.js, providing a way to parse HTTP messages (requests and responses) without relying on the native parser. This can be useful in environments where the native parser is not available or when a different parsing behavior is desired.

What are http-parser-js's main functionalities?

Parsing HTTP Requests

This code sample demonstrates how to use http-parser-js to parse an HTTP request. The parser object is created with the type HTTPParser.REQUEST, and callback functions are assigned to handle headers, body, and the completion of the message.

const httpParser = require('http-parser-js').HTTPParser;
const parser = new httpParser(httpParser.REQUEST);

parser[httpParser.kOnHeadersComplete] = function(headers, url) {
  // Use headers and url
};

parser[httpParser.kOnBody] = function(body) {
  // Use body
};

parser[httpParser.kOnMessageComplete] = function() {
  // Message is complete
};

// Simulate receiving data
const data = Buffer.from('GET / HTTP/1.1\r\nHost: example.com\r\n\r\n');
parser.execute(data);

Parsing HTTP Responses

This code sample shows how to parse an HTTP response using http-parser-js. The parser object is created with the type HTTPParser.RESPONSE, and callback functions are set up to process headers, body, and the end of the message.

const httpParser = require('http-parser-js').HTTPParser;
const parser = new httpParser(httpParser.RESPONSE);

parser[httpParser.kOnHeadersComplete] = function(headers, statusCode) {
  // Use headers and statusCode
};

parser[httpParser.kOnBody] = function(body) {
  // Use body
};

parser[httpParser.kOnMessageComplete] = function() {
  // Message is complete
};

// Simulate receiving data
const data = Buffer.from('HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nHello World');
parser.execute(data);

Other packages similar to http-parser-js

Readme

Source

Node Node-v12

HTTP Parser

This library parses HTTP protocol for requests and responses. It was created to replace http_parser.c since calling C++ functions from JS is really slow in V8. However, it is now primarily useful in having a more flexible/tolerant HTTP parser when dealing with legacy services that do not meet the strict HTTP parsing rules Node's parser follows.

This is packaged as a standalone npm module. To use in node, monkeypatch HTTPParser.

// Monkey patch before you require http for the first time.
process.binding('http_parser').HTTPParser = require('http-parser-js').HTTPParser;

var http = require('http');
// ...

Testing

Simply run npm test. The tests are copied from node and mscedex/io.js, with some modifcations.

Status

This should now be usable in any node application, it now supports (nearly) everything http_parser.c does while still being tolerant with corrupted headers, and other kinds of malformed data.

Node versions

http-parser-js should work via monkey-patching on Node v6-v11, and v13-14.

Node v12.x renamed the internal http parser, and did not expose it for monkey-patching, so to be able to monkey-patch on Node v12, you must run node --http-parser=legacy file.js to opt in to the old, monkey-patchable http_parser binding.

Standalone usage

While this module is intended to be used as a replacement for the internal Node.js parser, it can be used as a standalone parser. The standalone-example.js demonstrates how to use the somewhat awkward API (coming from compatibility with the Node.js internals) to parse HTTP from raw Buffers.

License

MIT. See LICENSE.md

Keywords

FAQs

Last updated on 27 Jun 2022

Did you know?

Socket installs a GitHub app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc