Я использую настройку angularavel для своего приложения. В моей локальной настройке мне не нужно явно отправлять XSRF-TOKEN
с угловым HTTP-запросом. И он отлично работает с laravel. Я загрузил ту же настройку на сервере и попытался войти в систему, используя мою форму, и laravel выбрасывает ошибку token mismatch
. Поэтому я проверил полезную нагрузку запроса в инструментах dev и обнаружил, что в запросе нет заголовка XSRF-TOKEN, как я вижу на своем локальном. Я считаю, что угловой генерирует один по умолчанию и отправляет его с каждым HTTP-запросом, но не уверен, почему он не работает здесь.
Я добавил маркер csrf в угловом формате на основе этого урока, используя метод метатег. my meta <meta name="csrf-token" content='<?php echo json_encode(csrf_token()); ?>'> // Also tried without encoding
<meta name="csrf-token" content='<?php echo json_encode(csrf_token()); ?>'> // Also tried without encoding
В моем .config у меня есть
$httpProvider.defaults.headers.common['X-XSRF-TOKEN'] = $('meta[name=csrf-token]').attr('content');
Если я использую X-XSRF-TOKEN
я получаю DecryptException в строке Encrypter.php 142: Недопустимые данные. Если я использую X-CSRF-TOKEN
я получаю ошибку несоответствия Token.
Мой запрос показывает токен в заголовке (добавляется ниже).
Accept:application/json, text/plain, */* Accept-Encoding:gzip, deflate Accept-Language:en-US,en;q=0.8 Connection:keep-alive Content-Length:68 Content-Type:application/json;charset=UTF-8 Cookie:PHPSESSID=ySsuvCYycB-9IfZZ29kSF1 Host:demo.abc.com Origin:http://demo.abc.com Referer:http://demo.abc.com/hexa/public/ User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36 FirePHP/4Chrome X-FirePHP-Version:0.0.6 X-Wf-Max-Combined-Size:261120 X-XSRF-TOKEN:InhRWmVjcUxZNWVMRWlrWmFXR09vbGdZT1M2Z284c0NqV2x2RWxaN0Mi -->token
Где я совершаю ошибку? Кроме того, дефисный токен из углового кажется интегрированным и большой большой струной. В то время как функция, деленная по функции, представляет собой небольшую строку.
Это то, что сработало для меня, я покажу вам соответствующие фрагменты.
В моем шаблоне у меня есть следующее:
<script type="text/javascript">myApp.constant("CSRF_TOKEN", '<?= csrf_token() ?>');</script>
И у меня есть завод, такой как:
.factory('Product', function($http, CSRF_TOKEN) { return { // store a product save : function(productData) { return $http({ method: 'POST', url: 'http://localhost/angularjs/public/api/products', headers: {'X-CSRF-TOKEN': CSRF_TOKEN}, data: productData }); }, } });
Это все, что мне нужно сделать, чтобы прекратить получать ошибки, связанные с токеном csrf.
что линии в модуле угловой работы для меня ….
in module angularjs $httpProvider.defaults.headers.post['X-CSRF-TOKEN'] = $('meta[name=_token]').attr('content'); $httpProvider.defaults.headers.post['X-XSRF-TOKEN'] = $('meta[name=_token]').attr('content'); $httpProvider.defaults.withCredentials = true; i