aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Derrick Farris <mr.dcfarris@gmail.com> 2023-03-02 18:15:17 -0600
committerGravatar Derrick Farris <mr.dcfarris@gmail.com> 2023-03-02 18:15:17 -0600
commit1e030ae2a4b93927c7a1a423515bc105e92172fe (patch)
tree8cb941f0d50ddffa381c87f2bc524b08b56bbebb
parent1ba007831dd6d3fd5ee02fab33b09d552107884d (diff)
downloadbun-derrick/fix/http-lowercase-headers.tar.gz
bun-derrick/fix/http-lowercase-headers.tar.zst
bun-derrick/fix/http-lowercase-headers.zip
fix(node:http): match Node headers casing (lowercase only)derrick/fix/http-lowercase-headers
-rw-r--r--src/bun.js/http.exports.js8
-rw-r--r--test/bun.js/node-http.test.ts9
2 files changed, 15 insertions, 2 deletions
diff --git a/src/bun.js/http.exports.js b/src/bun.js/http.exports.js
index d21f768d4..36cfeb086 100644
--- a/src/bun.js/http.exports.js
+++ b/src/bun.js/http.exports.js
@@ -308,13 +308,17 @@ export class Server extends EventEmitter {
function assignHeaders(object, req) {
var headers = req.headers.toJSON();
+ var lowerHeaders = {};
const rawHeaders = newArrayWithSize(req.headers.count * 2);
var i = 0;
for (const key in headers) {
rawHeaders[i++] = key;
- rawHeaders[i++] = headers[key];
+ var header = headers[key];
+
+ rawHeaders[i++] = header;
+ lowerHeaders[key.toLowerCase()] = header;
}
- object.headers = headers;
+ object.headers = lowerHeaders;
object.rawHeaders = rawHeaders;
}
function destroyBodyStreamNT(bodyStream) {
diff --git a/test/bun.js/node-http.test.ts b/test/bun.js/node-http.test.ts
index 7818fba62..c6d44f47d 100644
--- a/test/bun.js/node-http.test.ts
+++ b/test/bun.js/node-http.test.ts
@@ -411,6 +411,15 @@ describe("node:http", () => {
req.end();
}
});
+
+ it("should allow us to access headers on response object in lower-case", done => {
+ const req = request(`http://localhost:${serverPort}`, { method: "POST" }, res => {
+ expect(res.rawHeaders.indexOf("Content-Type")).toBeTruthy();
+ expect(res.headers["content-type"]).toBe("text/plain");
+ done();
+ });
+ req.end();
+ });
});
describe("signal", () => {