2014-09-10 4 views
1

У меня есть приложение, которое использует угловые 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 в этом случае?

Благодаря

ответ

2

Вы не должны добавления/изменения ресурсов через GET, поэтому вы не нужен маркер на запрос GET. Токены CSRF необходимы только в методах, которые изменить или добавить ресурсов в приложение с помощью в настоящее время вошедших пользователей.

+0

Привет, так это значит, что я могу использовать только те же слова csrf, что и для почтовых запросов (или ничего, кроме GET)? Моя форма в основном предназначена для создания объекта в базе данных. Пользователь еще не войдет в систему. –

+0

если * кто-то * может создать ресурс, для вас не будет смысла защищать его от CSRF. –

+0

Хорошо, я пытаюсь сделать запрос POST, и я получаю ошибку несоответствия токена в Laravel. Вы знаете, почему это может быть так? –

Смежные вопросы