【问题标题】:Laravel TokenMismatchException in Ajax while using token使用令牌时 Ajax 中的 Laravel TokenMismatchException
【发布时间】:2016-12-01 11:17:55
【问题描述】:

我知道我是 StackOverflow 的初学者,但我正面临一个难题。
好的,说正事,我在 laravel 中遇到了令牌问题。有时一切顺利,但我有错误:
jquery-2.2.4.min.js:4 POST http://localhost:8000/checkabsence/delete 500(内部服务器错误)

我的js: $.ajax({ method:"post", url:postDeleteAbsence, data:{ _token:token, absenceid: absenceid } }).done(function(msg) { alert('deleted'); });

我 100% 确定我正在传递令牌并且不在场。我的令牌设置在我的视图中:var token = '{{ Session::token() }}';

我的路线:

Route::post('/checkabsence/delete', [
'uses' => 'AbsenceController@postDeleteAbsence',
'as' => 'postDeleteAbsence',
'middleware' => 'auth'
]);

我的控制器:

public function postDeleteAbsence(Request $request) {
   //code
}

我的 laravel 版本:5.2.41

在我的上一个项目中,我创建了多个 Ajax 请求,一切都运行良好,但现在出现了这个错误...... 请注意,有时我在非 ajax 发布请求上也会出现令牌不匹配(例如,在第五次请求时,它会引发令牌不匹配错误)

我希望你能帮助我,因为我真的不知道该怎么做或者我做错了什么......

//新闻
我注意到我在数据库中拥有的令牌与我在 ajax 请求和其他地方使用的令牌不同。

路线: routes

【问题讨论】:

  • 尝试{{csrf_token()}} 而不是{{ Session::token() }}
  • 我试过了,没有任何变化:(
  • 第一次可以正常工作,然后就不行了吗?
  • 不,它在任何时候都不起作用。总是抛出相同的错误内部服务器错误 500

标签: laravel-5.2


【解决方案1】:

我遇到了和你一样的问题。在我的情况下,原因是用户登录时的身份验证。我使用的是Auth::login($user, true); 而不是Auth::login($user);

【讨论】:

    【解决方案2】:

    使用 AJAX 时必须将令牌设置为标头。

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': {{ csrf_token() }}
        }
    });
    

    编辑

    尝试以这种方式添加令牌:

    $.ajax({
        method: 'post',
        url: postDeleteAbsence,
        data: {
            absenceid: absenceid
        },
        headers: {
            'X-CSRF-TOKEN': '<?php echo csrf_token(); ?>'
        }
    }).done(function(msg) {
        alert('deleted');
    });
    

    【讨论】:

    • 试过了,还是一样的问题。
    • 但是你能告诉我数据库中的 remember_token 与我在控制台中显示的当前显示的令牌不同吗?
    • @mrforexify remember_token 与这个 tiken 完全不同。这个是针对请求的CSRF保护,另一个是针对用户登录会话的。
    • 那么我应该在 ajax 请求中使用哪个,例如在登录表单中呢?
    • @mrforexify 在您应该使用的每个表单上 csrf_token(),remember_token 由 laravel 身份验证中的构建处理,因此您可以忘记它。
    猜你喜欢
    • 2016-05-08
    • 1970-01-01
    • 2017-09-13
    • 2016-06-17
    • 2017-07-22
    • 2019-03-14
    • 2017-11-06
    • 2014-03-04
    • 2015-12-19
    相关资源
    最近更新 更多