0
在Laravel和Angular混合的應用程序中,當從Angular服務調用路由時,出現此持久性CSRF token mismatch
錯誤。Laravel/Angular應用程序中的CSRF令牌不匹配
ROUTES
Route::group(['middleware' => ['web'] ], function() {
// non-auth routes (e.g. signup, login) ...
Route::group(['middleware' => 'auth'], function() {
Route::get('w/{ignore?}', function() { return view('writer.index');})
->where('ignore', '.*');
Route::match(['get', 'post'], 'doc/open', '[email protected]');
});
});
的writer.index
視圖顯示了罰款,沒有令牌錯誤(該用戶已被認證):它是如何設置這是多還是少。
的VIEW包括:
<meta name="csrf-token" content="{{ csrf_token() }}" />
和
<script>
$(function(){
$.ajaxPrefilter(function(options, originalOptions, xhr) {
var token = $('meta[name="csrf-token"]').attr('content');
if (token) {
return xhr.setRequestHeader('X-CSRF-TOKEN', token);
}
});
});
</script>
從角,服務被生產超過$http.post
到doc/open
路線的請求,其返回token mismatch error
。
我檢查了標題,並且$http.post
確實發送了一個值X-XSRF-TOKEN
。但是,此標頭值與Cookie中的XSRF-TOKEN
值不匹配。如果這是不匹配的,爲什麼會發生?
您不需要設置角度,因爲它已經發送了從Laravel接收的x-xsrf - https://laravel.com/docs/5.2/routing#csrf-x-xsrf-token – naneri
@naneri謝謝。但如果我刪除它,我仍然會得到錯誤。 – greener
你可以在開發工具中檢查AJAX調用期間角度發送任何標題嗎?順便說一下你使用哪個版本的Angular? – naneri