【问题标题】:Getting 302 found in ajax JQUERY request in Laravel在 Laravel 的 ajax JQUERY 请求中找到 302
【发布时间】:2021-11-12 00:40:36
【问题描述】:

我在 Laravel 中使用 ajax 请求并传递 CSRF 令牌,但有时我的应用程序卡住并收到此错误:

代码:

  var formData = $(this).serialize();
    $.ajaxSetup({
        header:$('meta[name="_token"]').attr('content')
    });
    $.ajax({
        url:$(this).attr('action'),
        type:'POST',
        data:formData,
        headers: {
            Accept: "application/json"
        },
        success:function(response) {

此表单在模态弹出窗口中:

 <form id="user-login" class="login" action="{{ url('login') }}" method="post">
 {{ csrf_field() }}

控制器:

  public function login(Request $request)
    {  
        $validator = Validator::make($request->all(),[
            'email' => ['required'],
            'password' => ['required', 'string', 'min:5'],
        ]);
        if ($validator->passes()) {
        if (\Auth::guard('user')->attempt(['email' => $request->email, 'password' => $request->password, 'status' => 'active','isAdmin'=>'0']) || \Auth::guard('user')->attempt(['contact_number' => $request->email, 'password' => $request->password, 'status' => 'active','isAdmin'=>'0'])) {
            $request->session()->regenerate();
            return response(['success' => true,'message'=>'Successfully Login'], 200);
         }
        else
        {
            $message = 'Invalid username or password';
            return response()->json(['success'=>false,'message' => $message]);
        }
    }
    return Response::json(['errors' => $validator->errors()]);
    }

路线:

Route::post('/user-login', 'Auth\UserRegisterController@login')->name('user-login');

RedirectIfAuthenticated 中间件:

 public function handle($request, Closure $next, $guard = null)
    {
        if ($guard == "employee" && Auth::guard($guard)->check()) {
                return redirect(RouteServiceProvider::EMPLOYEE_HOME);
        }

        if (Auth::guard($guard)->check()) {
            return redirect(RouteServiceProvider::HOME);
        }

        return $next($request);
    }

任何解决方案,谢谢

【问题讨论】:

  • 你能分享控制器动作吗? 302 意味着你被重定向了
  • @GertB.: 我也添加了我的控制器代码,但这个问题存在于所有 ajax 请求中,但有时我的应用程序运行良好

标签: jquery laravel laravel-5


【解决方案1】:

修改控制器中的返回

return response(['success' => true,'message'=>'Successfully Login'], 200);

return response->json(['success' => true,'message'=>'Successfully Login'], 200);

【讨论】:

【解决方案2】:

你应该尝试几件事。

  1. 这可能是由于外部组的中间件正在重定向请求

  2. 您对此的 ajax 设置。确保你拿到了令牌

    $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': '&lt;?= csrf_token() ?&gt;' } });

  3. 确保正确返回响应。

    return response(['status' =&gt; true, 'message' =&gt; 'Success']);

【讨论】:

  • 这是评论,不是答案。令牌被“抓取”并会引发 419 错误。您在第 3 点返回响应的方式丢失了-&gt;json()
猜你喜欢
  • 2017-07-14
  • 1970-01-01
  • 2013-04-16
  • 2013-07-08
  • 2018-02-15
  • 2021-07-09
  • 1970-01-01
  • 2012-04-22
相关资源
最近更新 更多