fix:修复 ERR_HTTP2_PROTOCOL_ERROR 错误

This commit is contained in:
xiamuceer
2026-01-06 09:12:11 +08:00
parent db4695ef42
commit df8de3ae9b
+12 -4
View File
@@ -172,13 +172,18 @@ async def create_sse_generator(
def create_sse_response(generator: AsyncGenerator[str, None]) -> StreamingResponse: def create_sse_response(generator: AsyncGenerator[str, None]) -> StreamingResponse:
""" """
创建SSE StreamingResponse 创建SSE StreamingResponse - 兼容HTTP/2协议
Args: Args:
generator: SSE消息生成器 generator: SSE消息生成器
Returns: Returns:
StreamingResponse对象 StreamingResponse对象
注意:
- HTTP/2不支持Connection头,已移除
- 明确指定charset=utf-8以确保编码正确
- 添加CORS头以支持跨域请求
""" """
async def wrapper(): async def wrapper():
"""包装生成器以捕获StreamingResponse初始化时的GeneratorExit""" """包装生成器以捕获StreamingResponse初始化时的GeneratorExit"""
@@ -192,10 +197,13 @@ def create_sse_response(generator: AsyncGenerator[str, None]) -> StreamingRespon
return StreamingResponse( return StreamingResponse(
wrapper(), wrapper(),
media_type="text/event-stream", media_type="text/event-stream; charset=utf-8", # 明确指定charset
headers={ headers={
"Cache-Control": "no-cache", "Cache-Control": "no-cache, no-transform", # 禁用缓存和转换
"Connection": "keep-alive", # 移除 Connection: keep-alive (HTTP/2不兼容)
"X-Accel-Buffering": "no", # 禁用nginx缓冲 "X-Accel-Buffering": "no", # 禁用nginx缓冲
"Access-Control-Allow-Origin": "*", # CORS支持
"Access-Control-Allow-Methods": "POST, GET, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Authorization",
} }
) )