Токен CSRF на Laravel 5 + AngularJS - PullRequest
       1

Токен CSRF на Laravel 5 + AngularJS

0 голосов
/ 20 сентября 2018

Существует существующий проект, построенный на Laravel 5.2.5 и angularjs 1.7.4.Это не HTML-страницы, сгенерированные laravel, только API.Предполагается, что в проекте будет использована защита от CSRF.

В угловых документах говорится, что служба $ http автоматически установит заголовок X-XSRF-TOKEN .

При выполнении запросов XHR служба $ http считывает токен из файла cookie (по умолчанию XSRF-TOKEN) и устанавливает его как заголовок HTTP (по умолчанию X-XSRF-TOKEN).

Я обнаружил, что в документах Laravel 5.2 говорится, что он также проверит заголовок X-XSRF-TOKEN .

Laravel также хранитМаркер CSRF в файле cookie XSRF-TOKEN.Вы можете использовать значение cookie, чтобы установить заголовок запроса X-XSRF-TOKEN.Некоторые JavaScript-фреймворки, такие как Angular, делают это автоматически для вас.Маловероятно, что вам нужно будет использовать это значение вручную.

Но я получаю ошибку TokenMismatchException от Laravel.

Нужно ли использовать некоторые дополнительные настройки дляреализовать защиту CSRF здесь?

1 Ответ

0 голосов
/ 20 сентября 2018

попробуйте добавить поле _token в тело службы $ http.пример:

// blade template layout without jquery:
<meta name="csrf-token" content="{{ csrf_token() }}">
...
<script>
     window._token = document.querySelector("[name=csrf-token]").getAttribute("content");
</script>

// service.js
$http.post('/api/v1/user/create', {
    _token: window._token,
    fullname: 'foo',
    ...
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...