分享 1 0

    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 });
      }
    }
    老孙
    Your description here.