Runoneall

Runoneall's Blog

首页
关于
链接
RSS
Email


vercel搭建跨域API

  • 作者: Tom Brown
  • 时间: 2025-03-23
  • 分类: 默认  

使用 vercel edge function

export const runtime = "edge";

async function handleRequest(req: Request) {
  const url = new URL(req.url);
  const targetUrl = decodeURIComponent(url.search).slice(1);

  const reqInit: RequestInit & { duplex?: string } = {
    headers: req.headers,
    method: req.method,
    body: req.body,
    redirect: "follow",
    duplex: "half",
  };
  const modifiedRequest = new Request(targetUrl, reqInit);
  const resp = await fetch(modifiedRequest);

  return new Response(resp.body, {
    status: resp.status,
    statusText: resp.statusText,
    headers: new Headers({
      ...resp.headers,
      "Cache-Control": "no-store",
      "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
      "Access-Control-Allow-Headers": "*",
      "Access-Control-Allow-Origin": "*",
    }),
  });
}

export const GET = handleRequest;
export const POST = handleRequest;
export const PUT = handleRequest;
export const DELETE = handleRequest;
export const PATCH = handleRequest;
export const OPTIONS = handleRequest;

保存为 vap.ts (名称随意)
API地址: <域名>/api/<保存名称>?<目标URL>

© 2025 Runoneall. Old Fasion Theme. Powered by Hexo.