Skip to content

Commit b4d0d6c

Browse files
committed
lowercase header keys - fixes #1127
1 parent 16975b3 commit b4d0d6c

File tree

4 files changed

+21
-13
lines changed

4 files changed

+21
-13
lines changed

.changeset/three-laws-appear.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@sveltejs/kit': patch
3+
---
4+
5+
Normalize keys of headers from server side requests

packages/kit/src/runtime/server/endpoint.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { lowercase_keys } from './utils.js';
2+
13
/**
24
* @param {import('types/endpoint').ServerRequest} request
35
* @param {import('types/internal').SSREndpoint} route
@@ -19,7 +21,7 @@ export default async function render_route(request, route) {
1921
if (typeof response !== 'object') {
2022
return {
2123
status: 500,
22-
body: `Invalid response from route ${request.path};
24+
body: `Invalid response from route ${request.path};
2325
expected an object, got ${typeof response}`,
2426
headers: {}
2527
};
@@ -41,15 +43,3 @@ export default async function render_route(request, route) {
4143
}
4244
}
4345
}
44-
45-
/** @param {Record<string, string>} obj */
46-
function lowercase_keys(obj) {
47-
/** @type {Record<string, string>} */
48-
const clone = {};
49-
50-
for (const key in obj) {
51-
clone[key.toLowerCase()] = obj[key];
52-
}
53-
54-
return clone;
55-
}

packages/kit/src/runtime/server/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import render_page from './page/index.js';
22
import { render_response } from './page/render.js';
33
import render_endpoint from './endpoint.js';
44
import { parse_body } from './parse_body/index.js';
5+
import { lowercase_keys } from './utils.js';
56

67
/**
78
* @param {import('types/hooks').Incoming} incoming
@@ -22,6 +23,7 @@ export async function respond(incoming, options, state = {}) {
2223

2324
const incoming_with_body = {
2425
...incoming,
26+
headers: lowercase_keys(incoming.headers),
2527
body: parse_body(incoming)
2628
};
2729

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/** @param {Record<string, string>} obj */
2+
export function lowercase_keys(obj) {
3+
/** @type {Record<string, string>} */
4+
const clone = {};
5+
6+
for (const key in obj) {
7+
clone[key.toLowerCase()] = obj[key];
8+
}
9+
10+
return clone;
11+
}

0 commit comments

Comments
 (0)