mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-01 17:00:21 +08:00
fix(headers): 兼容非 ASCII header 值,避免 httpx ASCII 编码报错
将 HeaderBuilder 中的 latin-1 透传方案替换为 ASCII 归一化策略: - 对 x-codex-turn-metadata 做 JSON 重编码(ensure_ascii=true)保留语义 - 其他非 ASCII 头值仅转义非 ASCII 字符为 \uXXXX,保留 ASCII 字符原样 - 新增单测覆盖中文 header 与 codex turn metadata 场景 Close #180 Co-Authored-By: AAEE86 <ppk0227@hotmail.com>
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import json
|
||||
|
||||
from src.core.api_format import (
|
||||
CORE_REDACT_HEADERS,
|
||||
HeaderBuilder,
|
||||
@@ -73,6 +75,23 @@ class TestHeaderBuilder:
|
||||
assert built["Authorization"] == "base"
|
||||
assert built["X-Test"] == "1"
|
||||
|
||||
def test_non_ascii_value_is_escaped_for_httpx(self) -> None:
|
||||
builder = HeaderBuilder()
|
||||
builder.add("X-Test", "桌面")
|
||||
built = builder.build()
|
||||
assert built["X-Test"] == r"\u684c\u9762"
|
||||
|
||||
def test_codex_turn_metadata_is_normalized_to_ascii_json(self) -> None:
|
||||
builder = HeaderBuilder()
|
||||
raw = '{"turn_id":"t1","workspaces":{"d:\\\\桌面\\\\123\\\\Aether":{"has_changes":true}}}'
|
||||
builder.add("x-codex-turn-metadata", raw)
|
||||
built = builder.build()
|
||||
|
||||
normalized = built["x-codex-turn-metadata"]
|
||||
assert normalized.isascii()
|
||||
parsed = json.loads(normalized)
|
||||
assert "d:\\桌面\\123\\Aether" in parsed["workspaces"]
|
||||
|
||||
|
||||
class TestBuildUpstreamHeaders:
|
||||
def test_priority_and_drop_headers(self) -> None:
|
||||
|
||||
Reference in New Issue
Block a user