在Vue标头中缺少X-CSRF-TOKEN

时间:2016-12-29 19:18:46

标签: ajax laravel-5 vue.js csrf

我尝试使用VueJS 1.0.28进行POST,但我收到了Laravel 5.3 TokenMismatchException错误。

这是app.js以涵盖jQuery和Vue:

Vue.http.interceptors.push((request, next) => {
    request.headers.set('X-CSRF-TOKEN', Laravel.csrfToken);

    next();
});

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

这是main.blade.php布局,我们实例化Laravel值:

<script src="{!! asset('/js/app.js') !!}"></script>
<script>
    (function () {
        window.Laravel = {
            csrfToken: '{{ csrf_token() }}'
        };
    })();
</script>

当我查看POST请求中的标题时,我没有看到Vue中包含的X-CSRF。

这是jQuery的超级基本内容,而且我在Vue方面错误配置了一些问题。想法?

2 个答案:

答案 0 :(得分:1)

  1. 如果可能,请转到Vue 2. *。
  2. 不要混合使用Vue和jQuery。我保证,它会让你的生活更轻松。
  3. 用于处理AJAX使用,例如AXIOS
  4. 如果是这样,您只需使用:axiosDefaults.headers.common['X-CSRF-Token'] = csrfToken;

答案 1 :(得分:0)

事实证明,Vue和jQuery都获得了令牌,但我使用的包代码是直接使用XMLHttpRequest所以它需要手动获取令牌:

xhr.setRequestHeader('X-CSRF-TOKEN', Laravel.csrfToken);