我正在使用dropzone http://www.dropzonejs.com/但是作为vuejs组件:https://github.com/rowanwins/vue-dropzone
我也在使用laravel,它有一个名为csrf-token的东西,它应该随每个请求一起发送到服务器,以便服务器可以验证请求是否合法。
我需要在使用dropzone上传图片时发送此令牌。 Laravel文档建议:
https://laravel.com/docs/5.4/csrf#csrf-x-csrf-token
componentWillReceiveProps(nextProps) {
if (nextProps.exportCount > this.props.exportCount) {
this.export();
}
}
因此,在我安装的dropzone组件中,我放置了以下代码:
Then, once you have created the meta tag, you can instruct a library like
jQuery to automatically add the token to all request headers. This provides
simple, convenient CSRF protection for your AJAX based applications:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
By default, the resources/assets/js/bootstrap.js file registers the value of
the csrf-token meta tag with the Axios HTTP library. If you are not using
this library, you will need to manually configure this behavior for your application.
当我的dropzone将文件上传到服务器时,我从服务器获得异常,因为缺少csrf-token。我还检查了发送到服务器的标头,并且令牌不存在。
我的问题是,dropzone实际上是使用ajax发送图片吗?如果是,那么为什么上面的代码没有添加正确的标题,如果它不使用ajax发送标题,那么我该如何设置正确的标题?
答案 0 :(得分:1)
Dropzone vue组件将标头作为道具。您需要使用您希望dropzone发送到服务器的标头来设置此prop,它将起作用。