cloudfare workers proxy
edited
1export default {
2 async fetch(request) {
3 try {
4 const targetOrigin = "https://example.com";
5
6 // Build new URL
7 const url = new URL(request.url);
8 url.hostname = "example.com";
9 url.protocol = "https:";
10
11 const finalUrl = url.toString();
12
13 // Forward headers safely
14 const newHeaders = new Headers(request.headers);
15 newHeaders.delete("host");
16 newHeaders.delete("cf-connecting-ip");
17 newHeaders.delete("cf-ipcountry");
18 newHeaders.delete("cf-ray");
19 newHeaders.delete("cf-worker");
20
21 // Forward request
22 const response = await fetch(finalUrl, {
23 method: request.method,
24 headers: newHeaders,
25 body: request.method !== "GET" && request.method !== "HEAD" ? request.body : null,
26 redirect: "follow"
27 });
28
29 // Copy response headers
30 const resHeaders = new Headers(response.headers);
31
32 return new Response(response.body, {
33 status: response.status,
34 headers: resHeaders
35 });
36
37 } catch (err) {
38 return new Response(`Proxy error: ${err.message}`, { status: 502 });
39 }
40 }
41};