This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
interface Env {
|
||||
API_BASE_URL: string;
|
||||
}
|
||||
|
||||
export const onRequest: PagesFunction<Env> = async (context) => {
|
||||
const { request, env } = context;
|
||||
|
||||
const apiBase = (env.API_BASE_URL || "https://api.ppanel.dev").replace(
|
||||
/\/$/,
|
||||
"",
|
||||
);
|
||||
|
||||
const url = new URL(request.url);
|
||||
const targetUrl = `${apiBase}${url.pathname}${url.search}`;
|
||||
|
||||
const headers = new Headers(request.headers);
|
||||
headers.set("Host", new URL(apiBase).host);
|
||||
headers.delete("cf-connecting-ip");
|
||||
headers.delete("cf-ipcountry");
|
||||
headers.delete("cf-ray");
|
||||
headers.delete("cf-visitor");
|
||||
|
||||
const init: RequestInit = {
|
||||
method: request.method,
|
||||
headers,
|
||||
redirect: "follow",
|
||||
};
|
||||
|
||||
if (
|
||||
request.method !== "GET" &&
|
||||
request.method !== "HEAD" &&
|
||||
request.body !== null
|
||||
) {
|
||||
init.body = request.body;
|
||||
}
|
||||
|
||||
const response = await fetch(targetUrl, init);
|
||||
|
||||
const responseHeaders = new Headers(response.headers);
|
||||
responseHeaders.delete("set-cookie");
|
||||
responseHeaders.set("Access-Control-Allow-Origin", url.origin);
|
||||
responseHeaders.set(
|
||||
"Access-Control-Allow-Methods",
|
||||
"GET, POST, PUT, DELETE, PATCH, OPTIONS",
|
||||
);
|
||||
responseHeaders.set(
|
||||
"Access-Control-Allow-Headers",
|
||||
"Content-Type, Authorization",
|
||||
);
|
||||
|
||||
if (request.method === "OPTIONS") {
|
||||
return new Response(null, {
|
||||
status: 204,
|
||||
headers: responseHeaders,
|
||||
});
|
||||
}
|
||||
|
||||
return new Response(response.body, {
|
||||
status: response.status,
|
||||
statusText: response.statusText,
|
||||
headers: responseHeaders,
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user