You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js Edge Route部署至AWS/Vercel时出现405错误求助

解决Next.js Edge Route部署后405错误的方案

针对你遇到的本地正常、部署到AWS/Vercel出现405的问题,给你几个针对性的排查和修复方向:

1. 显式处理OPTIONS预检请求

浏览器发送POST跨域请求前会先发OPTIONS预检,虽然本地开发环境可能自动处理,但Edge Runtime部署环境需要显式响应。你的代码目前没有区分请求方法,导致OPTIONS请求可能被误处理,引发平台返回405。

修改服务端代码,优先处理OPTIONS:

export const config = {
    runtime: 'edge',
};

export default async function handler(req: Request): Promise<Response> {
    const corsHeaders = {
        'Access-Control-Allow-Origin': process.env.NEXT_PUBLIC_URL || '*', // 测试阶段可临时用*,验证后替换为实际域名
        'Access-Control-Allow-Methods': 'POST, OPTIONS',
        'Access-Control-Allow-Headers': 'Content-Type',
    };

    // 处理OPTIONS预检,返回204无需内容
    if (req.method === 'OPTIONS') {
        return new Response(null, {
            status: 204,
            headers: corsHeaders,
        });
    }

    // 仅处理POST请求
    if (req.method !== 'POST') {
        return new Response('Method Not Allowed', {
            status: 405,
            headers: {
               ...corsHeaders,
                'Allow': 'POST, OPTIONS',
            },
        });
    }

    // 你的业务逻辑
    const body = await req.json();
    // ...处理逻辑

    return new Response(JSON.stringify({ success: true, data: body }), {
        status: 200,
        headers: {
           ...corsHeaders,
            'Content-Type': 'application/json',
        },
    });
}

2. 验证部署环境变量

确保NEXT_PUBLIC_URL在部署平台(Vercel/AWS)中正确配置为前端的完整域名(例如https://your-app.vercel.app),空值会导致CORS头无效,浏览器拦截请求后表现为405。

3. 检查Edge Route的文件结构

  • Next.js App Router(13+):Edge Route必须放在app/api/[route-name]/route.ts
  • Next.js Pages Router:必须放在pages/api/[route-name].ts
    错误的文件位置会导致平台无法识别路由,返回404或405。

4. 直接用curl测试API

跳过浏览器的CORS限制,用curl直接调用部署后的API,确认请求是否真的到达你的代码:

curl -v -X POST https://your-domain/api/your-route \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'

查看返回的状态码和响应头,如果是405,检查平台日志(Vercel Functions日志、AWS Lambda@Edge日志),确认请求是否被Edge层拦截。

5. 排查平台额外配置

  • Vercel:检查是否在vercel.json中配置了重写/重定向规则,是否影响了API路由
  • AWS:检查Lambda@Edge的触发条件、CloudFront的缓存策略或WAF规则,是否阻止了POST请求

内容的提问来源于stack exchange,提问作者kysclient

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:13:20