Skip to content

Commit f674717

Browse files
fix: handle deleted cookies in Single-Flight requests (#1970)
Co-authored-by: Kyle Zheng <kylezheng73@gmail.com>
1 parent 222c8fc commit f674717

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

.changeset/spotty-cooks-trade.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@solidjs/start": patch
3+
---
4+
5+
delete expired cookies in Single-Flight requests

packages/start/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
"@tanstack/server-functions-plugin": "1.121.21",
7070
"@vinxi/plugin-directives": "^0.5.0",
7171
"@vinxi/server-components": "^0.5.0",
72+
"cookie-es": "^2.0.0",
7273
"defu": "^6.1.2",
7374
"error-stack-parser": "^2.1.4",
7475
"html-to-image": "^1.11.11",

packages/start/src/runtime/server-handler.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/// <reference types="vinxi/types/server" />
2+
import { parseSetCookie } from "cookie-es";
23
import { crossSerializeStream, fromJSON, getCrossReferenceHeader } from "seroval";
34
// @ts-ignore
45
import {
@@ -322,9 +323,16 @@ function createSingleFlightHeaders(sourceEvent: FetchEvent) {
322323
}
323324
SetCookies.forEach(cookie => {
324325
if (!cookie) return;
325-
const keyValue = cookie.split(";")[0]!;
326-
const [key, value] = keyValue.split("=");
327-
key && value && (cookies[key] = value);
326+
const { maxAge, expires, name, value } = parseSetCookie(cookie);
327+
if (maxAge != null && maxAge <= 0) {
328+
delete cookies[name];
329+
return;
330+
}
331+
if (expires != null && expires.getTime() <= Date.now()) {
332+
delete cookies[name];
333+
return;
334+
}
335+
cookies[name] = value;
328336
});
329337
Object.entries(cookies).forEach(([key, value]) => {
330338
headers.append("cookie", `${key}=${value}`);

pnpm-lock.yaml

Lines changed: 7 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)