我在尝试从React前端访问公共Next.js API服务器时遇到了CORS(跨域资源共享)问题。设置如下:
我的Next.js API服务器托管在域名“immybro.com“上。前端是用React构建的,是单独托管的。当我使用域名“immybro.com”从前端发出请求时,我总是面临错误:“已被CORS策略阻止:对preflight请求的响应未通过访问控制检查:不允许对preflight请求重定向。”令人惊讶的是,当我从“www.example.com“发出相同的请求immybro.vercel.app,(Vercel为我的Next.js应用程序部署的域),一切都运行得很好,没有任何CORS问题。我已经确保CORS在服务器端正确配置,以允许来自“www.example.com”等来源的请求immybro.com,但似乎CORS策略阻止了这些来自该域的请求。
我的CORS配置中是否缺少了什么?为什么来自“immybro.com“的请求会被阻止,而来自“www.example.com“的请求会被接受,没有任何问题?任何关于解决此CORS问题的见解或指导都将非常感谢!immybro.vercel.app
我的nextlog.js文件
/** @type {import('next').NextConfig} */
const nextConfig = {
async headers() {
return [
{
// matching all API routes
source: "/api/:path*",
headers: [
{ key: "Access-Control-Allow-Credentials", value: "true" },
{ key: "Access-Control-Allow-Origin", value: "*" }, // replace this your actual origin
{ key: "Access-Control-Allow-Methods", value: "GET,DELETE,PATCH,POST,PUT" },
{ key: "Access-Control-Allow-Headers", value: "X-CSRF-Token, X-Requested-With, Accept,Authorization, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version" },
]
}
]
}
}
module.exports = nextConfig
字符串
我的中间件文件
export async function middleware(request: NextRequest): Promise<NextResponse> {
// Check if the request path starts with "/api/auth" or "/api/admin"
if (request.nextUrl.pathname.startsWith("/api/auth") || request.nextUrl.pathname.startsWith("/api/admin")) {
if (request.method === "OPTIONS") {
return NextResponse.json({}); // Handle preflight OPTIONS request
}
型
1条答案
按热度按时间lb3vh1jj1#
我希望这能帮上忙
字符串