2016-12-29 105 views
1

我試圖使用VueJS 1.0.28進行POST,但我得到的Laravel 5.3 TokenMismatchException錯誤。在Vue標題中缺少X-CSRF-TOKEN

這是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端配置錯誤。想法?

回答

0

事實證明,Vue公司和jQuery雙方都拿到令牌,但我用的是包代碼直接使用XMLHttpRequest所以它需要通過執行手動獲取令牌:

xhr.setRequestHeader('X-CSRF-TOKEN', Laravel.csrfToken); 
0
  1. 移到Vue 2. *如果可能。
  2. 請勿混用Vue和jQuery。我保證,它會讓你的生活更輕鬆。
  3. 爲了處理AJAX,使用例如AXIOS
  4. 如果是這樣,你必須只使用:axiosDefaults.headers.common['X-CSRF-Token'] = csrfToken;
+0

#1不是一個選項。由於依賴項目對項目的#2要求。 #3我會研究它,但不能控制各種軟件包使用哪個庫。 – eComEvo