У меня есть функция ajax которая запускает удаление записи из моей базы данных.
Мне нужно сделать проверку CSRF для того же самого. Как я могу это сделать?
Я отправляю CSRF cookie вместе с моим почтовым запросом, но Yii 2.0 не проверяет его, и любой вход, который передается через ajax, достигает сервера.
Как сделать проверку CSRF для запросов ajax.
Нужно ли нам вручную устанавливать cookie и проверять?
Вам не нужно вручную устанавливать cookie.
Если вы используете токен JQuery CSRF, он будет отправлен автоматически.
Например, для AngularJS вы можете добавить его вручную, чтобы запросить такие параметры:
yii.getCsrfParam(): yii.getCsrfToken()
Убедитесь, что у вас включен YiiAsset .
В противном случае вы можете получить их из метатег (это в основном то, что делают эти два метода):
$('meta[name=csrf-param]').prop('content'): $('meta[name=csrf-token]').prop('content')
Также обратите внимание, что для включения проверки CSRF свойство свойства enableCsrfValidation свойства Controller и Request должно иметь значение true .
Обновить:
Еще одна важная вещь, чтобы понять:
Маркер CSRF будет проверяться только по этим методам: GET , HEAD , OPTIONS .
Также убедитесь, что в главном макете есть <?= Html::csrfMetaTags ?> .
Наконец, я определил, что
<?= Html::csrfMetaTags() ?>