Cloudflare Workers 代理B2 流量
const B2_DOMAIN = "totyt0.s3.us-east-005.backblazeb2.com";
addEventListener("fetch", event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
const url = new URL(request.url);
// 1. 替换域名为 B2 实际地址
url.hostname = B2_DOMAIN;
// 2. 创建新请求(保留原始方法和头信息)
const newRequest = new Request(url, {
method: request.method,
headers: request.headers,
body: request.body,
redirect: 'follow'
});
// 3. 添加必要的安全头(防止B2被直接访问)
newRequest.headers.set('Host', B2_DOMAIN);
try {
// 4. 代理请求到 B2
const response = await fetch(newRequest);
// 5. 修改响应头(可选)
const newResponse = new Response(response.body, response);
newResponse.headers.set('X-Proxy-By', 'Cloudflare-Worker');
newResponse.headers.delete('x-amz-request-id'); // 移除敏感头
return newResponse;
} catch (error) {
return new Response(`Proxy Error: ${error.message}`, { status: 500 });
}
}
复制链接
https://blog.imsun.org/archives/600.html
复制成功!