Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding nodejs http.request option: insecureHTTPParser for interoperability #2930

Merged
merged 2 commits into from Sep 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 9 additions & 1 deletion README.md
Expand Up @@ -456,7 +456,15 @@ These are the available config options for making requests. Only the `url` is re
// automatically. If set to `true` will also remove the 'content-encoding' header
// from the responses objects of all decompressed responses
// - Node only (XHR cannot turn off decompression)
decompress: true, // default
decompress: true // default

// `insecureHTTPParser` boolean.
// Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers.
// This may allow interoperability with non-conformant HTTP implementations.
// Using the insecure parser should be avoided.
// see options https://nodejs.org/dist/latest-v12.x/docs/api/http.html#http_http_request_url_options_callback
// see also https://nodejs.org/en/blog/vulnerability/february-2020-security-releases/#strict-http-header-parsing-none
insecureHTTPParser: undefined // default

// transitional options for backward compatibility that may be removed in the newer versions
transitional: {
Expand Down
4 changes: 4 additions & 0 deletions lib/adapters/http.js
Expand Up @@ -198,6 +198,10 @@ module.exports = function httpAdapter(config) {
options.maxBodyLength = config.maxBodyLength;
}

if (config.insecureHTTPParser) {
options.insecureHTTPParser = config.insecureHTTPParser;
}

// Create the request
var req = transport.request(options, function handleResponse(res) {
if (req.aborted) return;
Expand Down