Normalize all headers into lowercase

This commit is contained in:
Faisal Salman 2025-08-26 00:18:53 +07:00
parent 4e421e72fe
commit 3e65196b57
2 changed files with 22 additions and 5 deletions

View File

@ -1390,11 +1390,20 @@
extensions = undefined;
}
if (headers) {
if (typeof headers.append === FUNC_TYPE) {
// Convert Headers object into a plain object
if (headers && typeof headers.append === FUNC_TYPE) {
var kv = {};
headers.forEach(function (v, k) { kv[k] = v; });
headers.forEach(function (v, k) { kv[String(k).toLowerCase()] = v; });
headers = kv;
} else {
// Normalize headers field name into lowercase
var normalized = {};
for (var header in headers) {
normalized[String(header).toLowerCase()] = headers[header];
}
headers = normalized;
}
}
if (!(this instanceof UAParser)) {

View File

@ -381,4 +381,12 @@ describe('Read user-agent data from req.headers', function () {
const { browser } = UAParser(reqHeaders);
assert.strictEqual(browser.is('Midori'), true);
});
it('Headers field name should be case insensitive', function () {
const hEaDeRs = {
'uSeR-aGenT' : 'Midori/0.2.2 (X11; Linux i686; U; en-us) WebKit/531.2+'
};
const { browser } = UAParser(hEaDeRs);
assert.strictEqual(browser.toString(), "Midori 0.2.2");
});
});