CSRF令牌不匹配Laravel 5..8

时间:2019-11-24 14:48:48

标签: jquery ajax laravel-5.8

我有一个问题,我不知道为什么会显示此错误。我有一个通过ajax发布的表单。我在视图的头部添加了隐藏字段meta标记。执行时我的ajax呼叫我正在使用Ajaxsetup引入令牌。

这是我视图顶部的html meta标签。

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

我的ajax电话是

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

    let url = window.location.origin + '/login';
    let data = {
        'email': $('#login_email').val(),
        'password': $('#login_password').val(),
        '_token': $('meta[name="csrf-token"]').attr('content')
    };

    $.ajax({
        url: url,
        type: 'POST',
        data: data,
        success: function () {
            alert('Success')
        },
        error: function (e) {
            alert(e.responseText)
        }
    });
});

不知道为什么我会遇到csrf令牌不匹配的情况。我已经完成了我在此处的许多问题/答案中所看到的内容,很简单,它不起作用。任何帮助都非常感谢。

这是我的请求标头

Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 49
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host: vb.local
Origin: http://vb.local
Referer: http://vb.local/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
X-CSRF-TOKEN: YpP9izd705ztdtyqyFTBByLqcNmzoUIyb3i07HlA
X-Requested-With: XMLHttpRequest

1 个答案:

答案 0 :(得分:-1)

此问题来自CSRF令牌验证失败。因此,要么您不发布一个,要么发布不正确的一个。

在表单中使用{{ csrf_field() }}

OR

将您的路线URL添加到Http/Middleware/VerifyCsrfToken.php文件中。

示例像这样。如果您的ajax路由Route::post('searchsubmit','User\UserController@ViewSearchList')->name('searchsubmit');

Http / Middleware / VerifyCsrfToken.php

protected $except = [
       'searchsubmit',
    ];

根据您的情况,您需要添加login

protected $except = [
           'login',
        ];

然后通过以下方式清除缓存

php artisan config:clear
php artisan cache:clear
php artisan config:cache
相关问题