From 646c422a368482a8920d5682d95192b9d26d3ffc Mon Sep 17 00:00:00 2001 From: CHERWING <160421895+CHERWING@users.noreply.github.com> Date: Mon, 27 May 2024 03:48:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A9=E7=94=A8Cloudflare=20Workers=E4=BB=A3?= =?UTF-8?q?=E7=90=86999=E5=9F=9F=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cloudflare Workers Proxy/999域名反代.js | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Cloudflare Workers Proxy/999域名反代.js diff --git a/Cloudflare Workers Proxy/999域名反代.js b/Cloudflare Workers Proxy/999域名反代.js new file mode 100644 index 0000000..6f16b36 --- /dev/null +++ b/Cloudflare Workers Proxy/999域名反代.js @@ -0,0 +1,58 @@ +addEventListener('fetch', event => { + event.respondWith(handleRequest(event.request)); + }); + + async function handleRequest(request) { + const url = new URL(request.url); + const targetUrl = new URL('https://mc.999.com.cn' + url.pathname + url.search); + + // 创建新 Headers 对象,排除以 'cf-' 开头的请求头 + let newHeaders = new Headers(); + for (let pair of request.headers.entries()) { + if (!pair[0].startsWith('cf-')) { + newHeaders.append(pair[0], pair[1]); + } + } + + // 创建一个新的请求以访问目标 URL + const modifiedRequest = new Request(targetUrl, { + headers: newHeaders, + method: request.method, + body: request.body, + redirect: 'manual' + }); + + try { + const response = await fetch(modifiedRequest); + let modifiedResponse; + + // 处理重定向 + if ([301, 302, 303, 307, 308].includes(response.status)) { + const location = new URL(response.headers.get('location')); + modifiedResponse = new Response(null, { + status: response.status, + statusText: response.statusText, + headers: { + 'Location': location.href + } + }); + } else { + modifiedResponse = new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers: response.headers + }); + } + + // 添加 CORS 头部,允许跨域访问 + modifiedResponse.headers.set('Access-Control-Allow-Origin', '*'); + modifiedResponse.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); + modifiedResponse.headers.set('Access-Control-Allow-Headers', '*'); + + return modifiedResponse; + } catch (error) { + return new Response('无法访问目标地址: ' + error.message, { + status: 500 + }); + } + }