laravel 419 error page 错误页面

由于laravel防止csrf攻击,所以表单提交必须带上 _token 值

laravel

csrf在表单中如何使用

<form method="POST" action="/profile">
    {{ csrf_field() }}
    ...
</form>

其实 csrf_field() 函数等价于

直接替换也是没有毛病的

csrf在ajax中如何使用

$.post('url',{
        '_token' : '{{ csrf_token() }}',
        'id' : id,
        'username' : username,
        'password' : password
    },function(){
        conlose.log("提交成功");
    });

使用 csrf_token 函数会生成字符串,用这个提交就行了,如果不想每一个ajax中都这样提交的话,可以这样写

<head>
    <meta name="csrf-token" content="{{ csrf_token() }}">
    ...
</head>
    ...
<script>
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    $.post('url',{
        'id' : id,
        'username' : username,
        'password' : password
    },function(){
        conlose.log("提交成功");
    });
    ...
</script>

这样就可以在提交的时候不用写 _token,但是在提交的时候会默认加上

还有一种方法,使用中间件中排除,但不怎么安全,可以参考官方手册

参考链接
+ CSRF Protection
+ laravel表单提交419解决办法
+ laravel 显示419错误

发表评论

电子邮件地址不会被公开。 必填项已用*标注