Download server/_core/cookies.ts from taqarub/node-api: direct link, hf CLI and curl.
- Browser
- Download file 1.83 kB
-
https://huggingface.co/spaces/taqarub/node-api/resolve/main/server/_core/cookies.ts
- Command line
-
hf download hf://spaces/taqarub/node-api/server/_core/cookies.ts
-
curl -L -o cookies.ts https://huggingface.co/spaces/taqarub/node-api/resolve/main/server/_core/cookies.ts
1.83 kB
| import type { CookieOptions, Request } from "express"; | |
| const LOCAL_HOSTS = new Set(["localhost", "127.0.0.1", "::1"]); | |
| function isIpAddress(host: string) { | |
| // Basic IPv4 check and IPv6 presence detection. | |
| if (/^\d{1,3}(\.\d{1,3}){3}$/.test(host)) return true; | |
| return host.includes(":"); | |
| } | |
| function isSecureRequest(req: Request) { | |
| if (req.protocol === "https") return true; | |
| const forwardedProto = req.headers["x-forwarded-proto"]; | |
| if (!forwardedProto) return false; | |
| const protoList = Array.isArray(forwardedProto) ? forwardedProto : forwardedProto.split(","); | |
| return protoList.some((proto) => proto.trim().toLowerCase() === "https"); | |
| } | |
| /** | |
| * Extract parent domain for cookie sharing across subdomains. | |
| * e.g., "3000-xxx.manuspre.computer" -> ".manuspre.computer" | |
| * This allows cookies set by 3000-xxx to be read by 8081-xxx | |
| */ | |
| function getParentDomain(hostname: string): string | undefined { | |
| // Don't set domain for localhost or IP addresses | |
| if (LOCAL_HOSTS.has(hostname) || isIpAddress(hostname)) { | |
| return undefined; | |
| } | |
| // Split hostname into parts | |
| const parts = hostname.split("."); | |
| // Need at least 3 parts for a subdomain (e.g., "3000-xxx.manuspre.computer") | |
| // For "manuspre.computer", we can't set a parent domain | |
| if (parts.length < 3) { | |
| return undefined; | |
| } | |
| // Return parent domain with leading dot (e.g., ".manuspre.computer") | |
| // This allows cookie to be shared across all subdomains | |
| return "." + parts.slice(-2).join("."); | |
| } | |
| export function getSessionCookieOptions( | |
| req: Request, | |
| ): Pick<CookieOptions, "domain" | "httpOnly" | "path" | "sameSite" | "secure"> { | |
| const hostname = req.hostname; | |
| const domain = getParentDomain(hostname); | |
| return { | |
| domain, | |
| httpOnly: true, | |
| path: "/", | |
| sameSite: "none", | |
| secure: isSecureRequest(req), | |
| }; | |
| } | |