ChatGPT-Next-Web/app/api/cors/route.ts
2024-02-11 10:14:37 +08:00

38 lines
884 B
TypeScript

import { NextRequest, NextResponse } from "next/server";
async function handle(req: NextRequest) {
if (req.method === "OPTIONS") {
return NextResponse.json({ body: "OK" }, { status: 200 });
}
const targetUrl = req.nextUrl.searchParams.get("url");
if (!targetUrl) {
return NextResponse.json({ body: "Bad Url" }, { status: 500 });
}
const method = req.headers.get("method") ?? undefined;
const fetchOptions: RequestInit = {
headers: {
authorization: req.headers.get("authorization") ?? "",
},
method,
// @ts-ignore
duplex: "half",
};
const fetchResult = await fetch(targetUrl, fetchOptions);
console.log("[Any Proxy]", targetUrl, {
status: fetchResult.status,
statusText: fetchResult.statusText,
});
return fetchResult;
}
export const GET = handle;
export const OPTIONS = handle;
export const runtime = "edge";