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

Nuxt Auth本地登录正常,服务器部署后出现301/405错误求助

解决Nuxt+Laravel部署后登录/登出出现301/405错误的问题

问题核心原因

本地环境正常但服务器端出现The GET method is not supported for this route. Supported methods: POST错误,本质是URL末尾斜杠不一致导致服务器触发301重定向,浏览器自动将POST请求转为GET请求,进而触发Laravel的方法不允许错误。

解决方案

1. 统一URL末尾的斜杠(最直接有效)

修正Nuxt的nuxt.config.js配置

将auth endpoints中的URL末尾斜杠全部移除:

auth: {
  strategies: {
    local: {
      user: {
        property: 'data'
      },
      token: {
        maxAge: 86400,
        global: true
      },
      endpoints: {
          login: { url: '/api/auth/login', method: 'post' },
          logout: { url: '/api/auth/logout', method: 'post' },
          user: { url: '/api/auth/user', method: 'get' }
      }
    },
  }
},

修正Laravel的api.php路由配置

同步移除路由路径的末尾斜杠:

Route::group(['prefix' => 'auth'], function () {
  Route::post('login', [AuthController::class, 'login']);
  Route::post('register', [AuthController::class, 'register']);
  Route::post('set-password', [AuthController::class, 'setPassword']);

  Route::group(['middleware' => ['auth:sanctum']], function () {
    Route::get('user', [AuthController::class, 'user']);
    Route::post('logout', [AuthController::class, 'logout']);
    Route::post('password-reset', [AuthController::class, 'passwordReset']);
  });
});

2. 检查服务器重定向配置(如果需要保留斜杠)

如果业务需求必须保留URL末尾斜杠,需要调整服务器配置(以Nginx为例),禁止自动移除斜杠的重定向规则:

server {
    # ...其他原有配置
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        # 注释或删除以下会自动移除斜杠的重定向规则
        # rewrite ^/(.*)/$ /$1 permanent;
    }
}

Apache环境则检查.htaccess文件,确保没有类似的重定向规则。

验证

修正后重新部署前端和后端,测试登录/登出请求:

  • 确认网络请求没有301跳转
  • 请求方法保持为POST,不再被转为GET

内容的提问来源于stack exchange,提问作者Dávid Schnellbach

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:01:10