javascript CORS问题:Next.js API无法通过.com域访问,但可以通过vercel.app域运行

qpgpyjmq  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(63)

我在尝试从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
    }

lb3vh1jj

lb3vh1jj1#

我希望这能帮上忙

/** @type {import('next').NextConfig} */
const nextConfig = {
  async headers() {
    return [
      {
        source: "/api/(.*)",
        headers: [
          {
            key: "Access-Control-Allow-Origin",
            value: "*",
          },
          {
            key: "Access-Control-Allow-Methods",
            value: "GET, POST, PUT, DELETE, OPTIONS",
          },
          {
            key: "Access-Control-Allow-Headers",
            value: "Content-Type, Authorization",
          },
        ],
      },
    ];
  },
};

module.exports = nextConfig;

字符串

相关问题