cloudflare
小于 1 分钟
worker
gemini
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
  const url = new URL(request.url)
  let targetURL = new URL('https://generativelanguage.googleapis.com')
  targetURL.pathname = url.pathname
  targetURL.search = url.search
  let newRequest = new Request(targetURL, {
    method: request.method,
    headers: request.headers,
    body: request.body
  })
  let response = await fetch(newRequest)
  // 添加跨域支持
  let corsHeaders = {
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'GET,HEAD,POST,OPTIONS',
    'Access-Control-Allow-Headers': request.headers.get('Access-Control-Request-Headers'),
  }
  // 如果是预检请求,直接返回跨域头
  if (request.method === 'OPTIONS') {
    return new Response(null, { headers: corsHeaders })
  }
  // 复制响应以添加新的头
  let responseHeaders = new Headers(response.headers)
  for (let [key, value] of Object.entries(corsHeaders)) {
    responseHeaders.set(key, value)
  }
  return new Response(response.body, {
    status: response.status,
    statusText: response.statusText,
    headers: responseHeaders
  })
}
请求代理
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})
let param_url = '';
async function handleRequest(request) {
  const url = new URL(request.url);
  param_url = url.searchParams.get('url')
  const modifiedRequest = new Request(param_url, {
      headers: request.headers,
      method: request.method,
      body: request.body,
      redirect: 'follow'
  });
  const response = await fetch(modifiedRequest);
  const modifiedResponse = new Response(response.body, response);
  // 添加允许跨域访问的响应头
  modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');
  return modifiedResponse;
}
原始请求:https://a.com?id=1
代理请求:https://b.com?id=1 (绑定的自定义域名)
