В приложении, которое смешивает Laravel и Angular, у меня есть эта постоянная ошибка CSRF token mismatch
при вызове маршрута с углового сервиса. Это более или менее, как это установить:Несовпадение токенов CSRF в Laravel/Angular app
МАРШРУТЫ
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', 'Control[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>
От Угловая, услуга производит запрос на doc/open
маршрут через $http.post
который возвращает token mismatch error
.
Я проверил заголовки, и $http.post
действительно отправил значение для X-XSRF-TOKEN
. Однако это значение заголовка не соответствует значению XSRF-TOKEN
в файле cookie. Если это несоответствие, почему это происходит?
Вам не нужно настраивать для углового, потому что он уже отправляет x-xsrf, который получен из Laravel - https://laravel.com/docs/5.2/routing#csrf-x-xsrf-token – naneri
@naneri спасибо. но если я удалю его, я все равно получаю ошибку. – greener
Можете ли вы проверить инструменты dev, чтобы угловые посылать любые заголовки во время звонков AJAX? Кстати, какие версии Angular вы используете? – naneri