У меня есть проект, разбитый на бэкэнд и интерфейс, бэкэнд (API-интерфейс) построен в Laravel 5 и frontend в AngularJS. Оба проекта независимы, и они должны размещаться на разных серверах.Значок CSRF в угловом отличается от Laravel 5
В первом запросе я получить маркер CSRF из Laravel с этим кодом:
var xhReq = new XMLHttpRequest();
xhReq.open("GET", "http://laravel.local/api/token", false);
xhReq.send(null);
angular.module('mytodoApp').constant('CSRF_TOKEN',xhReq.responseText);
Так csrf_token посылается каждый раз, когда я делаю запрос API, как это:
$scope.deleteTodo = function(index) {
$scope.loading = true;
var todo = $scope.tours[index];
$http.defaults.headers.common['XSRF-TOKEN'] = CSRF_TOKEN;
console.log($http.defaults.headers.common['XSRF-TOKEN']);
$http.delete('http://laravel.local/api/deleteTodo/' + todo.id, {headers : {'XSRF-TOKEN': CSRF_TOKEN}})
.success(function() {
$scope.todos.splice(index, 1);
$scope.loading = false;
});
в API всегда возвращаются:
TokenMismatchException in compiled.php line 2440:
Является ли это правильно, что Laravel изменяет CSRF токен с каждым повторно квест от Углового? По каждому запросу Laravel создает новый файл для хранения/рамки/сеансов. Вы рекомендуете какое-либо другое решение для проверки того, что запросы к API поступают из безопасного происхождения?
угловой имеет встроенную обработку тонов для '$ http'..read the docs – charlietfl