Php Laravel 419错误-使用Ajax时验证CSRFToken问题

Php Laravel 419错误-使用Ajax时验证CSRFToken问题,php,jquery,ajax,laravel,Php,Jquery,Ajax,Laravel,我在使用Ajax时遇到了Laravel419错误,我不知道是什么导致了这个错误 我在其他帖子上看到它与csrf令牌有关,但我没有表单,所以我不知道如何解决这个问题 我的代码: function check_login_auth(id) { var email_address = $("input[name=l_email_address]").val(); var password = $("input[name=l_password]")

我在使用Ajax时遇到了Laravel419错误,我不知道是什么导致了这个错误

我在其他帖子上看到它与csrf令牌有关,但我没有表单,所以我不知道如何解决这个问题

我的代码:

function check_login_auth(id) {
    var email_address = $("input[name=l_email_address]").val();
    var password = $("input[name=l_password]").val();
    var token = $("meta[name=csrf-token]").attr("content");
        $.ajax({
            type: "POST",
            url: baseurl+"route",
            data: {
                email:email_address,
                password:password,
                _token:token
            },
            dataType: 'json',
            beforeSend: function() {
                $('#l_loading_gif').show()
                $('#l_login_form').hide()
            },
            success: function (data) {
                // console.log(data)
            },
        });
    } else {
        $('#s_error').append('<p style="color: red">something went wrong.</p>')
    }
}
功能检查\u登录\u身份验证(id){
var email_address=$(“输入[name=l_email_address]”)。val();
var password=$(“输入[name=l_password]”)。val();
var-token=$(“meta[name=csrf-token]”)attr(“content”);
$.ajax({
类型:“POST”,
url:baseurl+“路由”,
数据:{
电子邮件:电子邮件地址,
密码:密码,
_令牌:令牌
},
数据类型:“json”,
beforeSend:function(){
$('#l_loading_gif').show()
$('#l#u login_form').hide()
},
成功:功能(数据){
//console.log(数据)
},
});
}否则{
$(“#s_error”)。追加(“

出现问题。

”) } }

提前谢谢你

您正在调用POST方法,因此需要在头中传递
csrf\u令牌

headers: {
    'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
您的ajax如下所示

$.ajax({
    type: "POST",
    url: baseurl+"route",
    headers: {
        'X-CSRF-TOKEN': '{{ csrf_token() }}'
    },
    data: {
        email:email_address,
        password:password,
        _token:token
    },
    dataType: 'json',
    beforeSend: function() {
        $('#l_loading_gif').show()
        $('#l_login_form').hide()
    },
    success: function (data) {
        // console.log(data)
    },
});
如果您在js文件中调用它,那么在meta标记中传递csrf令牌

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

$.ajaxSetup({
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
}
});

首先,您必须以正确的方式获取
csrf令牌

var CSRF_TOKEN          = document.getElementById("csrf_token").value;

<input type="hidden" name="_token" id="csrf_token" value="{{ csrf_token() }}">


当您向laravel发出post请求时,它希望csrf令牌能够保护您的请求,即使您不使用表单。我建议您切换到axios,因为它很容易配置

使用axios,您可以执行以下操作

axios.defaults.headers.common['X-CSRF-TOKEN'] = 'your token here';
axios.post('/url', {
firstName: 'something',
lastName: 'something'})

您是否在js文件中使用ajax?错误419:“消息”:“异常”:“Symfony\\Component\\HttpKernel\\exception\\HttpException”,是的,首先我使用meta,但仍然不工作,然后我移动标题:X-CSRF-token它的laravel项目
\u token:token
假设您的令牌位于指定的meta标记中,应该足够了。尝试检查会话cookie的初始服务器响应(名称应在
config/sessions.php
中说明,然后检查AJAX请求发送的cookie是否与此相同?回答您的问题吗?不,它也不适用于我{csrf_token()}…santax错误显示您的ajax请求值中是否有
csrf\u令牌
var CSRF_TOKEN          = document.getElementById("csrf_token").value;

<input type="hidden" name="_token" id="csrf_token" value="{{ csrf_token() }}">
var CSRF_TOKEN          = $('meta[name="csrf-token"]').attr('content');
var CSRF_TOKEN          = form.find("input[name='_token']").val();

<input type="hidden" name="_token" value="{{ csrf_token() }}">
                                                                
data: {
        email:email_address,
        password:password,
        _token: CSRF_TOKEN
    },
axios.defaults.headers.common['X-CSRF-TOKEN'] = 'your token here';
axios.post('/url', {
firstName: 'something',
lastName: 'something'})