我有集成了Vue.js的Laravel 5.3项目,我想在我的表单中使用 CSRF-TOKEN
. 表单html代码在Vue组件文件中
resources / assets / js / bootstrap.js
我有这个:
Vue.http.interceptors.push((request, next) => {
request.headers.set('X-CSRF-TOKEN', MyApp.csrfToken);
next();
});
然后我有主vue文件 /resources/assets/js/app.js
:
require('./bootstrap');
Vue.component('callbackwindow', require('./components/callbackwindow.vue'));
const app = new Vue({
el: '#app',
data: { },
});
然后在Vue文件中我需要使用 csrf_field
,但我不知道如何在那里得到它,因为标准的php csrf_field()
没有在Vue组件内呈现,我不知道如何导入 MyApp.csrfToken
.
<template>
<div class="modal fade" >
<form @submit.prevent="submitForm" name="callback" method="POST" action="/" role="form" class="form-horizontal" enctype="multipart/form-data">
{!! csrf_field() !!}
...form code here...
</form>
</div>
</template>
<script>
export default { }
</script>
可以从这里导入 MyApp.csrfToken
变量到我的Vue模板文件中吗?
4 回答
作为替代方式:
1-从
<head>
中的csrf-token
名称获取元标记中的标记:2-将它作为道具传递给你的Vue组件:
您可以定义csrf令牌的一种方法是将以下内容添加到主刀片文件的
head
部分:或者,您可以使用类似
cookie
库的导入并使用xsrf
标记 .与npm:
用纱线:
然后在你的
bootstrap.js
文件中:希望这可以帮助!
我有同样的问题,我这样解决了 . 我不是很自豪,因为我弄脏了全球范围
添加以下内容:
在app.blade.php中
在我的任何组件/子组件MyComponent.vue中:
在刀片中执行此操作:
在Vue组件中执行此操作: