Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
http-parser-js
Advanced tools
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.
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);
http-message-parser is a package that parses raw HTTP message strings into an object representation. It differs from http-parser-js in that it works with complete message strings and does not stream the data. This can be simpler for certain applications but less efficient for others.
This library parses HTTP protocol for requests and responses. It was created to replace http_parser.c
since calling C++ function from JS is really slow in V8.
This was further modified by Jimbly to be useable in parsing responses, specifically tested with the "request" module, and addresses issues such as corrupt HTTP headers, which would otherwise cause Node's parser to throw a fatal error (HPE_INVALID_HEADER_TOKEN).
Jan Schär (jscissr) made some bigger changes and added tests. This fixed some bugs and added many missing features.
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');
// ...
Simply do npm test
. The tests are copied from node and mscedex/io.js, with some modifcations.
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.
MIT. See LICENSE.md
FAQs
A pure JS HTTP parser for node.
The npm package http-parser-js receives a total of 11,445,141 weekly downloads. As such, http-parser-js popularity was classified as popular.
We found that http-parser-js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
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.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.