Runoneall

Runoneall's Blog

首页
关于
搜索
链接
RSS
Sitemap
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.