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
相关产品推荐
相关产品推荐

