From 78dfbac4585420548dbeecc7fe12fde7193be4a6 Mon Sep 17 00:00:00 2001 From: shiyu Date: Mon, 10 Nov 2025 10:07:25 +0800 Subject: [PATCH] feat: enhance object retrieval and upload handling in S3 routes --- api/routes/s3.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/api/routes/s3.py b/api/routes/s3.py index 264097f..b08d7ee 100644 --- a/api/routes/s3.py +++ b/api/routes/s3.py @@ -494,8 +494,10 @@ async def object_get_head(request: Request, bucket: str, object_path: str): if request.method == "HEAD": return Response(status_code=200, headers=base_headers) resp = await stream_file(_virtual_path(settings, key), request.headers.get("range")) + safe_merge_keys = {"ETag", "Last-Modified", "x-amz-version-id", "Accept-Ranges"} for hk, hv in base_headers.items(): - resp.headers[hk] = hv + if hk in safe_merge_keys: + resp.headers.setdefault(hk, hv) resp.headers.setdefault("Content-Type", meta.get("mime") or "application/octet-stream") return resp @@ -512,6 +514,9 @@ async def put_object(request: Request, bucket: str, object_path: str): if err: return err headers = _object_headers(meta, key) + headers.pop("Content-Length", None) + headers.pop("Accept-Ranges", None) + headers["Content-Length"] = "0" _, extra = _meta_headers() headers.update(extra) return Response(status_code=200, headers=headers)