From f22cc4499ad87bd3dec55e806824c8f1812d564a Mon Sep 17 00:00:00 2001 From: hex2077 Date: Sun, 1 Mar 2026 22:01:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(tls-sidecar):=20=E4=BF=AE=E5=A4=8D=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E8=AF=B7=E6=B1=82=E6=A0=87=E5=A4=B4=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=92=8C=E9=85=8D=E7=BD=AE=E6=98=BE=E7=A4=BA=E7=A9=BA=E5=80=BC?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复 Cloudflare 403 错误:彻底清理代理和网络特征标头,保持小写形式 修复前端配置显示:正确处理 null/undefined 值,避免显示 "null" 字符串 --- static/app/modal.js | 34 ++++++++++++++++++---------------- tls-sidecar/main.go | 27 +++++++++++++++++++++------ 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/static/app/modal.js b/static/app/modal.js index 16d0419..f906030 100644 --- a/static/app/modal.js +++ b/static/app/modal.js @@ -458,7 +458,7 @@ function renderProviderConfig(provider) { baseFields.forEach(fieldKey => { const displayLabel = getFieldLabel(fieldKey); const value = provider[fieldKey]; - const displayValue = value !== undefined ? value : ''; + const displayValue = (value !== undefined && value !== null) ? value : ''; // 查找字段定义以获取 placeholder const fieldDef = fieldConfigs.find(f => f.id === fieldKey) || fieldConfigs.find(f => f.id.toUpperCase() === fieldKey.toUpperCase()) || {}; @@ -473,7 +473,7 @@ function renderProviderConfig(provider) { value="${displayValue}" readonly data-config-key="${fieldKey}" - data-config-value="${value || ''}" + data-config-value="${(value !== undefined && value !== null) ? value : ''}" placeholder="${placeholder}"> `; @@ -502,7 +502,7 @@ function renderProviderConfig(provider) { value="${displayValue}" readonly data-config-key="${fieldKey}" - data-config-value="${value || ''}" + data-config-value="${(value !== undefined && value !== null) ? value : ''}" placeholder="${placeholder}"> `; @@ -521,7 +521,7 @@ function renderProviderConfig(provider) { const field1Value = provider[field1Key]; const field1IsPassword = field1Key.toLowerCase().includes('key') || field1Key.toLowerCase().includes('password'); const field1IsOAuthFilePath = field1Key.includes('OAUTH_CREDS_FILE_PATH'); - const field1DisplayValue = field1IsPassword && field1Value ? '••••••••' : (field1Value || ''); + const field1DisplayValue = field1IsPassword && field1Value ? '••••••••' : ((field1Value !== undefined && field1Value !== null) ? field1Value : ''); const field1Def = fieldConfigs.find(f => f.id === field1Key) || fieldConfigs.find(f => f.id.toUpperCase() === field1Key.toUpperCase()) || {}; if (field1IsPassword) { @@ -533,7 +533,7 @@ function renderProviderConfig(provider) { value="${field1DisplayValue}" readonly data-config-key="${field1Key}" - data-config-value="${field1Value || ''}" + data-config-value="${(field1Value !== undefined && field1Value !== null) ? field1Value : ''}" placeholder="${field1Def.placeholder || ''}">