Title: Stated server.maxHeadersCount default is off by a factor of two · Issue #65470 · nodejs/node · GitHub
Open Graph Title: Stated server.maxHeadersCount default is off by a factor of two · Issue #65470 · nodejs/node
X Title: Stated server.maxHeadersCount default is off by a factor of two · Issue #65470 · nodejs/node
Description: Affected URL(s) https://nodejs.org/docs/latest-v24.x/api/http.html#servermaxheaderscount https://nodejs.org/docs/latest-v26.x/api/http.html#servermaxheaderscount Description of the problem In PR #12039, this limit was raised with the jus...
Open Graph Description: Affected URL(s) https://nodejs.org/docs/latest-v24.x/api/http.html#servermaxheaderscount https://nodejs.org/docs/latest-v26.x/api/http.html#servermaxheaderscount Description of the problem In PR #1...
X Description: Affected URL(s) https://nodejs.org/docs/latest-v24.x/api/http.html#servermaxheaderscount https://nodejs.org/docs/latest-v26.x/api/http.html#servermaxheaderscount Description of the problem In PR #1...
Opengraph URL: https://github.com/nodejs/node/issues/65470
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Stated server.maxHeadersCount default is off by a factor of two","articleBody":"### Affected URL(s)\n\nhttps://nodejs.org/docs/latest-v24.x/api/http.html#servermaxheaderscount\nhttps://nodejs.org/docs/latest-v26.x/api/http.html#servermaxheaderscount\n\n### Description of the problem\n\nIn PR #12039, this limit was raised with the justification that it's set to 2000 in code. However the reference was pointing to the default max header pairs, not header count. Pairs defaults to 2000 here: https://github.com/nodejs/node/blob/e65df3b3e51f3afbb83560308e627ed3ea04eca8/lib/_http_common.js#L53 \n\nEach incoming header consumes two pairs.\n\nHere's a minimal reproduction:\n\n```js\nconst http = require(\"http\");\n\nconst server = http.createServer((req, res) => {\n res.writeHead(200);\n res.end(String(req.rawHeaders.length \u003c\u003c 1)); // this should be the line count\n});\n\nserver.listen(0, () => {\n const port = server.address().port;\n const headers = {};\n\n // add 999 headers, bringing total to 1001 including host and connection\n // keep size small to not run into size limit\n for (let i = 0; i \u003c 999; i++) {\n headers[`h-${i}`] = \"v\";\n }\n\n http.get({ port, headers }, (res) => {\n let body = \"\";\n res.on(\"data\", (c) => (body += c));\n res.on(\"end\", () => {\n console.log(`Status: ${res.statusCode}`);\n server.close();\n });\n });\n});\n```\n\nI would expect this to work given the stated 2000 default, but I get 431:\n\n```sh\n$ node --version; node header-count-bug.js\nv24.19.0\nStatus: 431\n```","author":{"url":"https://github.com/arynh","@type":"Person","name":"arynh"},"datePublished":"2026-08-21T19:24:07Z","url":"https://github.com/nodejs/node/issues/65470"}
| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:eefe0699-9ac7-d697-5f3e-d6c691b36aba |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | ABCA:30551B:4D6326:68F9CB:6AED1DB1 |
| html-safe-nonce | 5875befbeea15e845380b939ae388c6a389647429027e72dbd0e8fee9392335e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBQkNBOjMwNTUxQjo0RDYzMjY6NjhGOUNCOjZBRUQxREIxIiwidmlzaXRvcl9pZCI6IjI2OTE2NTA3NzkyMjE5MjUyOTciLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 6da8c9765252dfef0c3d61269eb4bfe225a3baf152ef9a65929af3fa8cbbeac6 |
| hovercard-subject-tag | issue:5217455023 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/nodejs/node/65470/issue_layout |
| twitter:image | https://opengraph.githubassets.com/93f196898d5e53306db5ff5510056a89d28d341ca70309399c32b6a56c0cdfda/nodejs/node/issues/65470 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/93f196898d5e53306db5ff5510056a89d28d341ca70309399c32b6a56c0cdfda/nodejs/node/issues/65470 |
| og:image:alt | Affected URL(s) https://nodejs.org/docs/latest-v24.x/api/http.html#servermaxheaderscount https://nodejs.org/docs/latest-v26.x/api/http.html#servermaxheaderscount Description of the problem In PR #1... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | arynh |
| hostname | github.com |
| expected-hostname | github.com |
| None | e3e0f7f63e50c6fe879198a93a0a023a648ecc0a5e9bc3b5e033ac57172237e6 |
| turbo-cache-control | no-preview |
| go-import | github.com/nodejs/node git https://github.com/nodejs/node.git |
| octolytics-dimension-user_id | 9950313 |
| octolytics-dimension-user_login | nodejs |
| octolytics-dimension-repository_id | 27193779 |
| octolytics-dimension-repository_nwo | nodejs/node |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 27193779 |
| octolytics-dimension-repository_network_root_nwo | nodejs/node |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 707a24b346ac8a82878b9c084efaa38a997660cb |
| ui-target | canary-1 |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width