Download src/server/middleware/cors.ts from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 2.24 kB
-
https://huggingface.co/chenbhao/codev/resolve/main/src/server/middleware/cors.ts
- Command line
-
hf download hf://chenbhao/codev/src/server/middleware/cors.ts
-
curl -L -o cors.ts https://huggingface.co/chenbhao/codev/resolve/main/src/server/middleware/cors.ts
2.24 kB
| /** | |
| * CORS middleware for desktop and temporary open H5 access. | |
| */ | |
| import { isLoopbackHost } from '../h5AccessPolicy.js' | |
| export function corsHeaders(origin?: string | null): Record<string, string> { | |
| const allowedOrigin = origin || 'http://localhost:3000' | |
| return { | |
| 'Access-Control-Allow-Origin': allowedOrigin, | |
| 'Access-Control-Allow-Methods': 'GET, POST, PUT, PATCH, DELETE, OPTIONS', | |
| 'Access-Control-Allow-Headers': 'Content-Type, Authorization', | |
| 'Access-Control-Max-Age': '86400', | |
| Vary: 'Origin', | |
| } | |
| } | |
| function baseCorsHeaders(): Record<string, string> { | |
| return { | |
| 'Access-Control-Allow-Methods': 'GET, POST, PUT, PATCH, DELETE, OPTIONS', | |
| 'Access-Control-Allow-Headers': 'Content-Type, Authorization', | |
| 'Access-Control-Max-Age': '86400', | |
| Vary: 'Origin', | |
| } | |
| } | |
| export type CorsResolution = { | |
| allowed: boolean | |
| rejected: boolean | |
| headers: Record<string, string> | |
| } | |
| export type CorsResolutionOptions = { | |
| h5Enabled?: boolean | |
| isOriginAllowed?: (origin: string) => Promise<boolean> | |
| } | |
| const LOCAL_ORIGINS = new Set([ | |
| 'http://tauri.localhost', | |
| 'https://tauri.localhost', | |
| 'tauri://localhost', | |
| ]) | |
| function isLocalOrigin(origin?: string | null): boolean { | |
| if (!origin) { | |
| return true | |
| } | |
| if (LOCAL_ORIGINS.has(origin)) { | |
| return true | |
| } | |
| try { | |
| return isLoopbackHost(new URL(origin).hostname) | |
| } catch { | |
| return false | |
| } | |
| } | |
| export async function resolveCors( | |
| origin?: string | null, | |
| _requestOrigin?: string | null, | |
| options: CorsResolutionOptions = {}, | |
| ): Promise<CorsResolution> { | |
| if (!origin) { | |
| return { | |
| allowed: true, | |
| rejected: false, | |
| headers: corsHeaders(origin), | |
| } | |
| } | |
| if (!options.h5Enabled || isLocalOrigin(origin)) { | |
| return { | |
| allowed: true, | |
| rejected: false, | |
| headers: { | |
| ...baseCorsHeaders(), | |
| 'Access-Control-Allow-Origin': origin, | |
| }, | |
| } | |
| } | |
| if (options.isOriginAllowed && await options.isOriginAllowed(origin)) { | |
| return { | |
| allowed: true, | |
| rejected: false, | |
| headers: { | |
| ...baseCorsHeaders(), | |
| 'Access-Control-Allow-Origin': origin, | |
| }, | |
| } | |
| } | |
| return { | |
| allowed: false, | |
| rejected: true, | |
| headers: baseCorsHeaders(), | |
| } | |
| } | |