首页 > 解决方案 > 如何为 X-CSRF-TOKEN 启用生命周期活动状态

问题描述

我正在使用 laravel 5.4。在会话的 config/session.php 生命周期中超过 100 小时但是当我执行 ajax 请求时出现此错误

1) TokenMismatchException
in VerifyCsrfToken.php line 68
at VerifyCsrfToken->handle(object(Request), object(Closure))
in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
in Pipeline.php line 53

我在标题中添加了下面

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

使用 javascript

var token =  $('meta[name="csrf-token"]').attr('content');

获得令牌。

我不希望令牌永远过期。

要求的 Ajax 代码

var token = $('meta[name="csrf-token"]').attr('content');
 $.ajax({
        type: "POST",
        url: path + '/load_free_data',
        data: 'selected_day=' + day +'&opt=' + opt  + '&_token=' + token , 
        beforeSend : function()
        {  
             $('.white-overlay').show();
        },
        success: function(e)
         {

             data = e.data;

         }
     });

标签: laravellaravel-5.4

解决方案


将其包含在 html 标头中

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

然后在包含 jquery script cdn include 之后,或者毕竟包含,

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

然后你可以使用你的 ajax 调用,它应该可以工作。


推荐阅读