CSRF令牌未传递给Laravel / VueJS中的请求标头

时间:2017-10-01 08:17:52

标签: php laravel laravel-passport

在尝试发出GET请求时,我得到了

  

401:{错误:"未经身份验证。"}

当我在Chrome调试器中检查请求标头时,我可以看到x-requested-with:XMLHttpRequest,但我看不到crsf-token

我使用护照,我启用了CreateFreshApiToken中间件

在我的HTML中,我有:

<script>
    window.Laravel = {
        csrfToken: "{{ csrf_token() }}"
    };
    var csrfToken = "{{csrf_token()}}";
</script>

在我的VueJS中,我有:

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
    jqXHR.setRequestHeader('X-CSRF-Token', csrfToken);
});

我仍然使用JQuery执行查询:

this.$http.post('/api/v1/associations/create', this.form)
.then(...)

我该怎么办才能修复它?

3 个答案:

答案 0 :(得分:0)

Unauthenticated表示用户未登录且与csrf_token无关。

答案 1 :(得分:0)

我最终用axios替换了this.$http.post,在boostrap.js中,我刚刚取消注释:

window.axios.defaults.headers.common = {
    'X-CSRF-TOKEN': window.Laravel.csrfToken,
    'X-Requested-With': 'XMLHttpRequest'
};

答案 2 :(得分:0)

你试过吗

var token = '{{ Session::token() }}';