【laravel開發隨筆】csrf_token問題
在通過post請求向後台提交數據時,若是當前沒有關閉csrf保護,會返回一個500的錯誤提示token不匹配,拒絕接受數據。
背景:laravel 5.4 + vue
問題:無法向後台提交數據
解決方案:
除了官方文檔寫的解決方案(這種用form來整合提交數據並隱式帶上token限制頗多,用起來也不方便),提供另一個方案。
最終問題症點在於,當使用post請求提交數據時,提交的數據裡沒有某個該有的字段,導致數據在經過路由受中間件檢查時,被阻擋回來。
對某數據
let data = {
title: '',
content: '',
};
如果數據要過post請求,一律帶上字段_token
let data = {
title: '',
content: '',
_token: this.csrf_token
};
但在寫vue組件時,會發現另一個問題。無論是csrf_token(),還是csrf_field(),都無法調用。官方文檔給出了解決辦法:
你需要在主要佈局手動定義一個Laravel對象
<script> window.Laravel = {!! json_encode([ 'csrfToken' => csrf_token(), ]) !!}; </script>
之後再通過正常的數據流流進相關組件中使用即可。
浙公网安备 33010602011771号