У меня есть приложение, которое использует угловые js для запроса $ http GET на сервер. Одна страница в частности имеет форму, которая получает маркер CSRF встроенный в него следующим образомНеисправность маркера larvel csrf для ajax GET Request
<input type="hidden" ng-model="token" value="{{{ Session::getToken() }}}">
В мой контроллер у меня есть следующий код:
public function getMethod($arg, $token)
{
/*Check for csrf token validity*/
if ($token != Session::token()) {
return Response::json(
array(),
403
);
}
........
}
на стороне клиента я сделать запрос, как это:
var arg = $scope.arg;
var get_url = '/url/routing/to/controller/arg/' + arg + '/' + $scope.token;
$http({method: 'GET', url: get_url})
.success(function(data, status, headers, config) {
//Do stuff after success
.............
})
.error(function(data, status, headers, config) {
//Handle error
.......
});
Я точно не знаю, как запрос GET может быть интегрирован с CSRF токены, но когда я сделать запрос GET зарегистрированному URL, я получаю токенов несоответствие. В основном новый токен генерируется каждый раз, когда на сервер отправляется запрос ajax, поэтому начальный токен, извлеченный в элементе ввода формы, не совпадает, когда я сравниваю его в контроллере. Может ли кто-нибудь сказать мне, как можно сделать действительность csrf в этом случае?
Благодаря
Привет, так это значит, что я могу использовать только те же слова csrf, что и для почтовых запросов (или ничего, кроме GET)? Моя форма в основном предназначена для создания объекта в базе данных. Пользователь еще не войдет в систему. –
если * кто-то * может создать ресурс, для вас не будет смысла защищать его от CSRF. –
Хорошо, я пытаюсь сделать запрос POST, и я получаю ошибку несоответствия токена в Laravel. Вы знаете, почему это может быть так? –