Skip to content

Commit 121b258

Browse files
committed
write event.response.headers to Responses returned from server functions & api routes
1 parent 7550f7c commit 121b258

1 file changed

Lines changed: 17 additions & 2 deletions

File tree

packages/start/src/server/handler.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ export function createBaseHandler(
3838
if (pathname.startsWith(serverFunctionTest)) {
3939
const serverFnResponse = await handleServerFunction(e);
4040

41-
if (serverFnResponse instanceof Response) return serverFnResponse;
41+
if (serverFnResponse instanceof Response) {
42+
writeEventResponseHeaders(serverFnResponse.headers)
43+
return serverFnResponse;
44+
}
4245

4346
return new Response(serverFnResponse as any, {
4447
headers: e.res.headers,
@@ -56,7 +59,11 @@ export function createBaseHandler(
5659
// @ts-expect-error
5760
sharedConfig.context = { event };
5861
const res = await fn!(event);
59-
if (res !== undefined) return res;
62+
if (res !== undefined) {
63+
if(res instanceof Response) writeEventResponseHeaders(res.headers)
64+
65+
return res;
66+
}
6067
if (event.request.method !== "GET") {
6168
throw new Error(
6269
`API handler for ${event.request.method} "${event.request.url}" did not return a response.`,
@@ -222,3 +229,11 @@ function handleStreamCompleteRedirect(context: PageEvent) {
222229
to && write(`<script>window.location="${to}"</script>`);
223230
};
224231
}
232+
233+
function writeEventResponseHeaders(target: Headers) {
234+
const event = getRequestEvent()!;
235+
236+
for(const [name, value] of event.response.headers) {
237+
if(!target.has(name)) target.set(name, value);
238+
}
239+
}

0 commit comments

Comments
 (0)