调用 post 到 vue laravel 错误 419 csrf-token

Call post to vue with laravel error 419 csrf-token

我在 Laravel 的一个项目中工作,我实现了 Vue 来制作异步任务。 我的问题是 Laravel 在 post 方法 csrf 令牌保护中使用,我不知道如何将此令牌传递给 javascript 调用。我该怎么做?

<header id="heading" >
        <meta name="csrf-token" content="{{ csrf_token() }}">
        <h1 class="text-center">Preparación de Pedidos</h1>
        @if( $mensaje != '' )
        <div class="alert alert-success">{{ $mensaje }}</div>
        @endif
</header>
<script type="text/javascript">
    const app = new Vue({
        el: '#vue', 
        data: {
            mensaje: '',
            pedidos: [],
            csrf: document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
        },
        created() {
            $.post('/prestashop/intranet2/almacen/get_tipos_pedidos_preparacion', {}).then(function(response) {
                this.tipos = response.body.tipos;
            }, function(response) {
                alert('error');
                console.log(response);
            });
            this.updateEstadisticas();
        },
    });
 </script>

在调试中我可以看到令牌

_token:"kUM5V4gwOweyE09jdoVP3lvta1DHyYpTlrGnSfx9"

应该是 _token而不是csrf

 data: {
            mensaje: '',
            pedidos: [],
             "_token": document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
        },

此外,您也可以像这样获取令牌,而不是从查询选择器中获取令牌。

 data: {
     "_token":{{ csrf_token() }}
    },

最后,问题出在代码的其他部分,所以 CSRF 不是问题。

如果你使用 VueJS。 路由 Laravel,你应该把它放在 api.php 而不是 web.php