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

Laravel+JQuery登录接口出现401 Unauthorized错误排查求助

排查Laravel API前端JQuery调用401 Unauthorized问题

前端代码问题修复

  1. 修复CSRF令牌选择器语法错误
    代码中$('input[name=\"_token\"').val();缺少闭合的],导致无法正确获取表单CSRF令牌,修改为:
    var token = $('input[name="_token"]').val();
    
  2. 移除多余转义符
    Blade模板中的URL和DOM选择器里的转义符会导致解析异常,修正后:
    • {{url(\"api/login\")}} → {{ url('api/login') }}
    • $('meta[name=\"_token\"]') → $('meta[name="_token"]')
  3. 统一CSRF传递方式
    Laravel支持通过X-XSRF-TOKEN请求头或表单_token字段传递令牌,二选一即可。建议保留ajaxSetup的请求头方式,移除表单数据中的_token字段避免重复:
    data: {
        'email': email,
        'password': password
    },
    

后端代码潜在问题修复

  1. 修正Validator类导入大小写
    LoginRequest中导入的Validator类名大小写错误,会导致验证失败时无法触发正确处理逻辑,修改为:
    use Illuminate\Contracts\Validation\Validator; // 改为大写开头的Validator
    
  2. 确认Auth Guard匹配
    如果登录路由在routes/api.php(默认使用api guard),需要在登录时指定对应guard:
    if(!Auth::guard('api')->attempt($request->only('email','password')))
    {
        Helpers::sendError('Email or password is wrong !!!');
    }
    
    同时检查config/auth.php中api guard的驱动配置是否符合你的认证方式:
    'guards' => [
        'api' => [
            'driver' => 'session', // 若用session认证,或根据需求改为token
            'provider' => 'users',
        ],
    ],
    
  3. 确保错误响应返回正确状态码
    检查Helpers::sendError方法是否返回HTTP 401状态码,示例实现:
    public static function sendError($message, $errors = [], $code = 401)
    {
        return response()->json([
            'success' => false,
            'message' => $message,
            'errors' => $errors
        ], $code);
    }
    

额外排查点

  • 路由位置验证:确认登录路由在routes/web.php还是routes/api.php,若在api.php需确保未给登录接口添加auth:api中间件。
  • 浏览器控制台检查:查看请求URL是否正确、X-XSRF-TOKEN请求头是否存在、表单数据是否完整发送。
  • 跨域/ Cookie配置:若为跨域请求,需给JQuery ajax添加xhrFields: {withCredentials: true}以携带session cookie。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:38:08