From ae7f4e2405355df949675bf4b00d44ec0127d2d2 Mon Sep 17 00:00:00 2001 From: KevinLiao Date: Thu, 7 Aug 2025 12:33:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9Claude=20Console=20?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E7=9A=84UA=E9=BB=98=E8=AE=A4=E8=A1=8C?= =?UTF-8?q?=E4=B8=BA=EF=BC=8C=E9=BB=98=E8=AE=A4=E9=80=8F=E4=BC=A0=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AFUA=E8=80=8C=E9=9D=9E=E5=9B=BA=E5=AE=9A?= =?UTF-8?q?=E7=9A=84UA=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/claudeConsoleRelayService.js | 16 ++++++++++++++-- .../src/components/accounts/AccountForm.vue | 10 ++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/services/claudeConsoleRelayService.js b/src/services/claudeConsoleRelayService.js index 361d106a..60a955dc 100644 --- a/src/services/claudeConsoleRelayService.js +++ b/src/services/claudeConsoleRelayService.js @@ -79,6 +79,12 @@ class ClaudeConsoleRelayService { const filteredHeaders = this._filterClientHeaders(clientHeaders); logger.debug(`[DEBUG] Filtered client headers: ${JSON.stringify(filteredHeaders)}`); + // 决定使用的 User-Agent:优先使用账户自定义的,否则透传客户端的,最后才使用默认值 + const userAgent = account.userAgent || + clientHeaders?.['user-agent'] || + clientHeaders?.['User-Agent'] || + this.defaultUserAgent; + // 准备请求配置 const requestConfig = { method: 'POST', @@ -87,7 +93,7 @@ class ClaudeConsoleRelayService { headers: { 'Content-Type': 'application/json', 'anthropic-version': '2023-06-01', - 'User-Agent': account.userAgent || this.defaultUserAgent, + 'User-Agent': userAgent, ...filteredHeaders }, httpsAgent: proxyAgent, @@ -231,6 +237,12 @@ class ClaudeConsoleRelayService { const filteredHeaders = this._filterClientHeaders(clientHeaders); logger.debug(`[DEBUG] Filtered client headers: ${JSON.stringify(filteredHeaders)}`); + // 决定使用的 User-Agent:优先使用账户自定义的,否则透传客户端的,最后才使用默认值 + const userAgent = account.userAgent || + clientHeaders?.['user-agent'] || + clientHeaders?.['User-Agent'] || + this.defaultUserAgent; + // 准备请求配置 const requestConfig = { method: 'POST', @@ -239,7 +251,7 @@ class ClaudeConsoleRelayService { headers: { 'Content-Type': 'application/json', 'anthropic-version': '2023-06-01', - 'User-Agent': account.userAgent || this.defaultUserAgent, + 'User-Agent': userAgent, ...filteredHeaders }, httpsAgent: proxyAgent, diff --git a/web/admin-spa/src/components/accounts/AccountForm.vue b/web/admin-spa/src/components/accounts/AccountForm.vue index 9802bed7..2f45e5b6 100644 --- a/web/admin-spa/src/components/accounts/AccountForm.vue +++ b/web/admin-spa/src/components/accounts/AccountForm.vue @@ -496,8 +496,11 @@ v-model="form.userAgent" type="text" class="form-input w-full" - placeholder="默认:claude-cli/1.0.61 (console, cli)" + placeholder="留空则透传客户端 User-Agent" > +

+ 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 +

@@ -853,8 +856,11 @@ v-model="form.userAgent" type="text" class="form-input w-full" - placeholder="默认:claude-cli/1.0.61 (console, cli)" + placeholder="留空则透传客户端 User-Agent" > +

+ 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 +