通过Cloudflare的workers部署反向代理代码

在cloudflare中创建一个workers,用Hello示例部署,并且编辑代码,将下面代码拷贝更新即可,并绑定一个自己的域名如:blog.


-----------------------------------------------------------------------


// 把你的博客域名改在这里 const BLOG_HOST = 'frankz1998.blogspot.com' addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { try { const url = new URL(request.url) // 构建目标URL:转发到你的Blogspot博客 let targetPath = url.pathname if (url.search) { targetPath += url.search } const targetUrl = `https://${BLOG_HOST}${targetPath}` // 处理请求头 const headers = new Headers() for (const [key, value] of request.headers.entries()) { // 排除会干扰代理的头部 if (!['host', 'origin', 'referer', 'cf-connecting-ip', 'cf-visitor'].includes(key.toLowerCase())) { headers.set(key, value) } } // 设置Host头为你自己的Blogspot域名 headers.set('Host', BLOG_HOST) headers.set('User-Agent', request.headers.get('user-agent') || 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36') // 发送请求到Blogspot const response = await fetch(targetUrl, { method: request.method, headers: headers, body: ['GET', 'HEAD'].includes(request.method) ? null : request.body, redirect: 'follow' }) // 处理响应 const responseHeaders = new Headers(response.headers) // 允许跨域 responseHeaders.set('Access-Control-Allow-Origin', '*') responseHeaders.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') responseHeaders.set('Access-Control-Allow-Headers', '*') // 修改Cookie的Domain和Path属性,使其在当前域名下生效 const setCookie = responseHeaders.get('set-cookie') if (setCookie) { responseHeaders.set('set-cookie', setCookie .replace(/Domain=[^;]+/i, '') .replace(/Path=\/[^\/]*/, 'Path=/') ) } // 替换响应中的URL引用,把blogspot域名替换为你的代理域名 let responseBody = await response.text() responseBody = responseBody .replace(new RegExp(`https?://${BLOG_HOST}`, 'g'), url.origin) return new Response(responseBody, { status: response.status, statusText: response.statusText, headers: responseHeaders }) } catch (error) { return new Response(JSON.stringify({ error: 'Proxy Error', message: error.message }), { status: 502, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' } }) } }

评论

此博客中的热门博文

通过命令行在Github上发布项目的新版本

利用GitHub免费的静态页面托管空间发布网页

本地部署OpenAvatarChat实时交互数字人系统