From 829682b98a3a7d36c0467e92121666005481524d Mon Sep 17 00:00:00 2001 From: hotwa Date: Sun, 22 Mar 2026 15:53:24 +0800 Subject: [PATCH] feat: forward Authorization header from request to downstream Prioritize Authorization header from incoming request over environment variable, allowing per-request API key routing. Co-Authored-By: Claude Opus 4.6 --- src/proxy/forward.ts | 8 +++++--- src/routes/ollama.ts | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/proxy/forward.ts b/src/proxy/forward.ts index b9b80a1..21b0cc9 100755 --- a/src/proxy/forward.ts +++ b/src/proxy/forward.ts @@ -3,7 +3,7 @@ import { rewriteResponse } from './response-rewriter'; import { normalizeRequest } from './request-normalizer'; import { logger } from '../utils/logger'; -export async function forwardChatRequest(requestBody: any): Promise { +export async function forwardChatRequest(requestBody: any, authorization?: string): Promise { const targetHost = config.targetUrl; const targetEndpoint = `${targetHost}/api/chat`; @@ -22,8 +22,10 @@ export async function forwardChatRequest(requestBody: any): Promise { 'Accept': 'application/json' }; - // Add Authorization header if API key is configured - if (config.apiKey) { + // Use Authorization from request header, fallback to config + if (authorization) { + headers['Authorization'] = authorization; + } else if (config.apiKey) { headers['Authorization'] = `Bearer ${config.apiKey}`; } diff --git a/src/routes/ollama.ts b/src/routes/ollama.ts index 47061b1..9cf3797 100755 --- a/src/routes/ollama.ts +++ b/src/routes/ollama.ts @@ -17,7 +17,7 @@ const ollamaRoutes: FastifyPluginAsync = async (server: FastifyInstance) => { return; } - const response = await forwardChatRequest(body); + const response = await forwardChatRequest(body, request.headers.authorization); reply.status(200).send(response); } catch (error: any) {