Почтовые запросы работают нормально. Приложение Laravel 5 на PHP 5.4. Почтовые запросы в том же приложении, работающем на PHP 5.6.9, генерируют:
TokenMismatchException VerifyCsrfToken.php в строке 46
Это происходит при каждом запросе на почту как на WAMP, так и на IIS. Случается с использованием сеансов базы данных и сеансов файлов. Полностью переустановил, а также попробовал все предложения, сделанные здесь: https://laracasts.com/discuss/channels/general-discussion/keep-getting-tokenmismatchexception-verifycsrftokenphp-onlineline-46?page=2 . Люди отключают промежуточное ПО Csrf как исправление, но это не жизнеспособное решение. Любая помощь оценивается.
Когда я понял, что это происходит только в IE и Chrome, но не в Firefox, это привело меня к исправлению. Приложение использовало кнопки добавления AddThis, а javascript добавлял iframe на страницы. Эту проблему можно решить, добавив заголовок P3P в промежуточное ПО VerifyCsrfToken. Надеюсь, это спасет кого-нибудь в те часы, которые я потерял.
public function handle($request, Closure $next) { $response = $next($request); if (last(explode('\\',get_class($response))) != 'RedirectResponse') { $response->header('P3P', 'CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); } return $response; }
Поместите <meta name="csrf_token" content="{{ csrf_token() }}">
так что токен всегда доступен и используется с вашим запросом AJAX: ex:
var csrftoken = (function() { var metas = window.document.getElementsByTagName('meta'); for(var i=0 ; i < metas.length ; i++) { if ( metas[i].name === "csrf-token") { return metas[i].content; } }})();
просто добавьте {{ csrf_field() }}
в блок формы, и это сэкономит вам много времени
<form action="{{ route('signup') }}" method="post" class="form-signin"> {{ csrf_field() }} ... </form>
Для тех, кто сталкивается с этой проблемой, несмотря на добавление {{ csrf_field() }}
в поле form
и даже добавив это в тег <meta name="csrf-token" content="{{ csrf_token() }}">
Проблема заключается в записи в хранилище из-за того, что вы не добавляете своего текущего пользователя в Linux в нужную группу. Обязательно добавьте своего текущего пользователя в группу www-data
. Напишите эту команду
sudo chown -R :www-data /path/to/laravel-folder
Обязательно укажите права на папку для хранения, а также в приложении laravel.
sudo chmod -R 775 /path/to/laravel-folder/storage
Надеюсь, это поможет.