fix: dSYM/混淆映射下载缺少认证头导致下载失败,dSYM 远端下载改为签名链接
历史记录点击 dSYM 下载后停留在接口地址本身:window.open 无法带 Authorization 头,接口未认证直接 401,重定向逻辑根本没机会执行。 改为前端先用 authFetch 认证请求,再按返回类型跳转远端地址或保存二 进制文件;远端地址同时改造成与 IPA 一致的 OSS 签名短时链接,避免 未签名地址在私有 bucket 下被拒绝。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
1466e24c83
commit
082c487cf8
@@ -67,15 +67,17 @@ def test_download_dsym_nonexistent_task(client, tmp_config):
|
||||
|
||||
|
||||
def test_download_dsym_remote_fallback(client, tmp_config):
|
||||
"""本地文件已被清理,但保存了远端地址时应重定向到远端"""
|
||||
"""本地文件已被清理,但保存了远端地址时应返回远端下载链接(而非直接重定向,
|
||||
因为该接口需要认证信息,浏览器无法直接跳转到 302 目标)"""
|
||||
task_id = _create_task_with_files(
|
||||
client, tmp_config,
|
||||
dsym_path="/tmp/nonexistent.dSYM",
|
||||
dsym_url="https://oss.example.com/ios-builds/iOS/app_1_0_0_main_adhoc.dSYM.zip",
|
||||
)
|
||||
resp = client.get(f"/api/tasks/{task_id}/dsym", follow_redirects=False)
|
||||
assert resp.status_code in (302, 307)
|
||||
assert resp.headers["location"] == "https://oss.example.com/ios-builds/iOS/app_1_0_0_main_adhoc.dSYM.zip"
|
||||
with patch("backend.services.distribution.get_published_dsym_url", return_value="https://signed.example.com/app.dSYM.zip?signature=1"):
|
||||
resp = client.get(f"/api/tasks/{task_id}/dsym")
|
||||
assert resp.status_code == 200
|
||||
assert resp.json()["url"] == "https://signed.example.com/app.dSYM.zip?signature=1"
|
||||
|
||||
|
||||
# ---- 混淆映射表下载 ----
|
||||
|
||||
Reference in New Issue
Block a user