调用 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
我在 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