http-parser-js

A pure JS HTTP parser for node.

  • Owner: node-ffi/node-ffi
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

HTTP Parser

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. 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 do 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.

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.

License

MIT. See LICENSE.md

Main metrics

Overview
Name With Ownernode-ffi/node-ffi
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 4)
Platform
License:MIT License
所有者活动
Created At2009-12-05 17:23:17
Pushed At2023-07-15 04:15:33
Last Commit At2019-01-25 10:27:00
Release Count43
Last Release Name2.3.0 (Posted on )
First Release Namev0.3.1 (Posted on )
用户参与
Stargazers Count4.3k
Watchers Count101
Fork Count410
Commits Count838
Has Issues Enabled
Issues Count562
Issue Open Count230
Pull Requests Count25
Pull Requests Open Count17
Pull Requests Close Count41
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private