首页 文章

laravel显示旧的CSRF令牌,导致tokenmismatchException

提问于
浏览
0

我正在使用 Laravel 进行一个项目,我需要 CSRF token 进行API调用 . 我的CSRF元标记有时包含过期的标记 . 通过刷新它可以像10个新电话一样 . 所以在完成10次刷新之后,我从我的AJAX调用中得到 TokenMismatchException . 将此API调用设置为CSRF异常不是一种选择,因为API调用负载很重并且包含有 Value 的信息 .

我没有自定义任何middelware类 .

我在javascript中的AJAX调用如下所示:

$.ajax({
        url: '/getAllProducts',
        type: 'POST',
        data: {
            type: "gpu",
            hash: md5hash,
            _token: $('meta[name="csrf-token"]').attr('content')

        },
        dataType: 'json',
        success: function (response) {
            md5hash = '';
            products = response;
            $('.more-information').fadeIn();
            $.getScript("/js/filter-products.js", function(){
                filterProducts();
            });

            $.getScript("/js/createPopup.js", function(){
                $('.more-information').on('click', createPopup);
                $('.open-details').on('click', createPopup);
            });
        }
    });

我的路线看起来像这样

route::post('/getAllProducts', 'PartsController@getAllProducts');

meta csrf令牌的生成类似于标准的Laravel app.blade.php

<meta name="csrf-token" content="{{ csrf_token() }}">

我知道关于这个问题还有其他问题,但我找不到解决方案 . 我尝了几个 .

以下是我尝试过的解决方案列表:

  • 添加jquery Ajaxsetup

  • 更新laravel

  • 清除缓存

真的希望有人可以帮助我

1 回答

  • 0

    在ajax设置中设置令牌 .

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    

相关问题