fix(proxy): 新增响应头过滤函数,避免透传不兼容的上游头

添加 filter_proxy_response_headers 函数过滤 content-length、content-encoding、
transfer-encoding 等 hop-by-hop 和 body-dependent 头,防止客户端解码失败。
统一在 chat_handler_base、cli_handler_base、stream_telemetry 和 usage recorder
中使用该函数处理响应头透传。
This commit is contained in:
fawney19
2026-01-14 14:50:33 +08:00
parent 68737b9ed6
commit 5e4099a588
6 changed files with 81 additions and 11 deletions

View File

@@ -26,6 +26,7 @@ from typing import Any, Dict, Optional
from sqlalchemy.orm import Session
from src.api.handlers.base.utils import filter_proxy_response_headers
from src.core.logger import logger
from src.models.database import ApiKey, User
from src.services.request.result import RequestResult
@@ -94,7 +95,7 @@ class UsageRecorder:
target_model = metadata.model
# 非流式成功时,返回给客户端的是提供商响应头(透传)+ content-type
client_response_headers = dict(metadata.provider_response_headers) if metadata.provider_response_headers else {}
client_response_headers = filter_proxy_response_headers(metadata.provider_response_headers)
client_response_headers["content-type"] = "application/json"
await UsageService.record_usage(