2017-07-08 157 views
0

我已經在它一段時間得到這個csrf令牌與vue.js例子一起工作。laravel 5 vue.js csrf令牌

但它一直說我沒有令牌。我嘗試了各種變化。

底部(未頭部,身體的結束之前)

<script> 
    window.myToken = <?php echo json_encode([ 
     '_token' => csrf_token(), 
    ]); ?> 
    </script> 

    <script src="/js/manifest.js"></script> 
    <script src="/js/vendor.js"></script> 
    <script src="/js/app.js"></script> 

HTML

<div id="app"> 
@section('content') 
<example></example> 
@endsection 
</div> 

控制檯輸出

CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token 

vendor.js:7635 You are running Vue in development mode. 
Make sure to turn on production mode when deploying for production. 
See more tips at https://vuejs.org/guide/deployment.html 

實施例似乎沒有多少任一做,但我猜我需要令牌。

回答

2

將此腳本插入您的頁面head標記。

<script> 
    window.Laravel = { 
     'csrfToken' => '{{csrf_token()}}', 
    }; 
</script> 

在你bootstrap.js

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

真的很感謝,如果有人告訴我......爲什麼這是投票下來? –

+0

@Florian ...它工作嗎? –

+0

似乎也無法正常工作,我以前見過window.Laravel方法。我認爲Vue.http也應該在腳本標記中?我不是那個沮喪的人。 – Florian

7

,如果你看看

/resources/assets/js/bootsrap.js

你會發現

let token = document.head.querySelector('meta[name="csrf-token"]'); 

你應該在你<head>標籤

<meta name="csrf-token" content="{{csrf_token}}"> 

添加此錯誤將不再顯示。

我希望這可以幫助

+0

Mh似乎並不適合我,或者也可以用csrf_token() – Florian

+1

爲適用於我 Bas

+1

@Bas我很高興這可以幫助您 –