Handle dockerhub blob redirect
Some checks failed
Deploy to Cloudflare Workers / Build & Deploy (push) Has been cancelled

This commit is contained in:
ciiiii
2025-02-16 18:14:20 -06:00
parent e176bc4b29
commit dfac79db55

View File

@@ -105,12 +105,22 @@ async function handleRequest(request) {
const newReq = new Request(newUrl, { const newReq = new Request(newUrl, {
method: request.method, method: request.method,
headers: request.headers, headers: request.headers,
redirect: "manual", // don't follow redirect to dockerhub blob upstream
redirect: isDockerHub ? "manual" : "follow",
}); });
const resp = await fetch(newReq); const resp = await fetch(newReq);
if (resp.status == 401) { if (resp.status == 401) {
return responseUnauthorized(url); return responseUnauthorized(url);
} }
// handle dockerhub blob redirect manually
if (isDockerHub && resp.status == 307) {
const location = new URL(resp.headers.get("Location"));
const redirectResp = await fetch(location.toString(), {
method: "GET",
redirect: "follow",
});
return redirectResp;
}
return resp; return resp;
} }