- feat: Add slider verification code (bd67997) - fix bug: Inventory cannot be zero (1f7a6ee) - fix: resolve merge conflicts and lint errors
64 lines
1.5 KiB
TypeScript
64 lines
1.5 KiB
TypeScript
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,
|
|
});
|
|
};
|