fix: vercel 403
This commit is contained in:
parent
013754d351
commit
ce6590d1f8
|
@ -1,121 +0,0 @@
|
||||||
export async function POST(req: Request) {
|
|
||||||
// 从请求头中读取上游 URL
|
|
||||||
const headers = new Headers(req.headers);
|
|
||||||
const upstreamUrl = headers.get("Upstream-Url");
|
|
||||||
console.log("headers:", headers);
|
|
||||||
if (!upstreamUrl) {
|
|
||||||
throw new Error("Upstream URL not specified in headers");
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
// 创建新 URL
|
|
||||||
const url = new URL(req.url);
|
|
||||||
const apiPath = url.pathname.replace("/api", "");
|
|
||||||
const upstreamEndpoint = upstreamUrl + apiPath;
|
|
||||||
|
|
||||||
// 创建新请求的headers对象
|
|
||||||
const headers = new Headers(req.headers);
|
|
||||||
// 移除或替换可能引起问题的头部
|
|
||||||
// headers.delete("Host");
|
|
||||||
headers.delete("Content-Length");
|
|
||||||
headers.delete("Upstream-Url"); // 也删除上游 URL 头部,以免发送到上游服务器
|
|
||||||
|
|
||||||
// 读取并解析 JSON 请求体
|
|
||||||
const reader = req.body.getReader();
|
|
||||||
let requestBody = "";
|
|
||||||
let done, value;
|
|
||||||
while (!done) {
|
|
||||||
({ done, value } = await reader.read());
|
|
||||||
if (value) {
|
|
||||||
requestBody += new TextDecoder().decode(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 尝试解析为 JSON
|
|
||||||
let jsonBody;
|
|
||||||
try {
|
|
||||||
jsonBody = JSON.parse(requestBody);
|
|
||||||
} catch (error) {
|
|
||||||
throw new Error("Failed to parse request body as JSON");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 使用fetch方法转发请求到上游服务器
|
|
||||||
const response = await fetch(upstreamEndpoint, {
|
|
||||||
method: "POST",
|
|
||||||
headers: headers,
|
|
||||||
body: JSON.stringify(jsonBody), // 确保将请求体转换为字符串
|
|
||||||
});
|
|
||||||
console.log("headers:", headers);
|
|
||||||
console.log("req.body:", jsonBody);
|
|
||||||
// 将响应数据发送回客户端
|
|
||||||
return new Response(response.body, {
|
|
||||||
status: response.status,
|
|
||||||
headers: response.headers,
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
// 错误处理
|
|
||||||
console.error(error);
|
|
||||||
return new Response(
|
|
||||||
JSON.stringify({ error: "Internal Server Error in NEXT" }),
|
|
||||||
{
|
|
||||||
status: 500,
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function GET(req: Request) {
|
|
||||||
// 从请求头中读取上游 URL
|
|
||||||
const headers = new Headers(req.headers);
|
|
||||||
const upstreamUrl = headers.get("Upstream-Url");
|
|
||||||
if (!upstreamUrl) {
|
|
||||||
throw new Error("Upstream URL not specified in headers");
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
// 创建新 URL
|
|
||||||
const url = new URL(req.url);
|
|
||||||
const apiPath = url.pathname.replace(/\/api\/paper|\/api/g, "");
|
|
||||||
|
|
||||||
const upstreamEndpoint = upstreamUrl + apiPath + url.search;
|
|
||||||
|
|
||||||
// 创建新请求的headers对象
|
|
||||||
const headers = new Headers(req.headers);
|
|
||||||
// 移除或替换可能引起问题的头部
|
|
||||||
headers.delete("Host");
|
|
||||||
headers.delete("Upstream-Url"); // 也删除上游 URL 头部,以免发送到上游服务器
|
|
||||||
|
|
||||||
// 使用fetch方法转发请求到上游服务器
|
|
||||||
const response = await fetch(upstreamEndpoint, {
|
|
||||||
method: "GET",
|
|
||||||
headers: headers,
|
|
||||||
});
|
|
||||||
console.log("response:", response);
|
|
||||||
// 将响应数据发送回客户端
|
|
||||||
let text = await response.text();
|
|
||||||
console.log("text", text);
|
|
||||||
return new Response(text, {
|
|
||||||
headers: headers,
|
|
||||||
status: response.status,
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
// 错误处理
|
|
||||||
console.error(error);
|
|
||||||
return new Response(
|
|
||||||
JSON.stringify({ error: "Internal Server Error in NEXT" }),
|
|
||||||
{
|
|
||||||
status: 500,
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const nextConfig = {
|
|
||||||
trailingSlash: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
export default nextConfig;
|
|
Loading…
Reference in New Issue
Block a user