【问题标题】:Laravel 5.2 | CSRF Token mismatchLaravel 5.2 | CSRF 令牌不匹配
【发布时间】:2016-12-10 08:18:00
【问题描述】:

我正在使用 AJAX 发布请求并使用 CSRF-TOKEN 发送 - 在我的本地服务器上运行良好,但在我的 IIS SERV TokenMismatchException in VerifyCsrfToken.php line 67:

这是代码:

               $.ajax({
                    url     : '{{ route('dashboard.ajax.update') }}',
                    method  : 'POST',
                    data    : {
                        table       : 'categories',
                        data        : {
                            order: $count
                        },
                        conditions  : {
                            id: $id
                        }
                    },
                    dataType: 'JSON',
                    headers : {
                        "X-CSRF-TOKEN": '{{ csrf_token() }}'
                    }
                });

在控制台中我可以看到请求:X-CSRF-TOKEN:w3liodqf8bdOvWH9uVTzLHVVsE0L1uIlCpnOyVVS

什么会导致这个问题?

【问题讨论】:

  • 为什么不尝试在视图中设置变量 token = '{{Session::token()}}' 并使用 _token:token 传递数据而不使用任何标题。
  • 问题也可能出在你的会话存储位置More

标签: ajax laravel-5.2 csrf


【解决方案1】:
    $.ajax({
        type: 'POST',
        url: 'stringUrl',
        beforeSend: function (xhr) {
            xhr.setRequestHeader('X-CSRF-TOKEN', '{{ csrf_token() }}');
        },
        data: {
            'id': $id // etc..
        },
        cache: false,
        error: function (xhr, type, exception) {
            console.log("ajax error response type " + type);
        }
    });

尝试在“beforeSend”事件中设置它

【讨论】:

    【解决方案2】:

    问题出在我的会话中。我已经清理了所有会话文件,清理了缓存并使用了php artisan key:generate。在此之后 - 工作得很好。

    【讨论】:

      猜你喜欢
      • 2016-10-24
      • 2020-07-08
      • 2016-09-20
      • 2020-01-20
      • 2020-06-17
      • 1970-01-01
      • 2020-05-02
      • 2016-10-15
      • 2020-04-14
      相关资源
      最近更新 更多