refactor: 提取共享信封模块 EnvelopeMixin/ok

auth.py 的 _EnvelopeMixin/_ok 提取到 tracker/api/envelope.py(去下划线前缀),
auth.py 改为 import 使用;collect.py 的 finalize_response 含 ACAO 回显逻辑
保留在自身视图,仅注释指向未来收敛。

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-15 14:25:14 +08:00
parent 7ff1536fbf
commit f22786d746
3 changed files with 37 additions and 32 deletions
+3
View File
@@ -79,6 +79,9 @@ class CollectBatchView(APIView):
def finalize_response(self, request, response, *args, **kwargs):
"""统一收口:ACAO 回显 + 错误信封。
错误信封部分与 tracker.api.envelope.EnvelopeMixin 同构——collect 端含 ACAO 回显
(浏览器 SDK 跨域需读错误体),暂保留在自身视图,未来收敛至共享模块。
429/ParseError 等由 DRF 异常处理器产出的响应(无 ACAO、body 是 {detail})在这里补齐——
否则浏览器 SDK 跨域读不到错误体会误判网络错误而重试,限流时反而打爆限流器。
dispatch 对 initial() 抛出的 Throttled/ParseError 同样走 finalize_response,此钩子全覆盖。