nepster-web
@nepster-web

Компонент request, почему возникает Bad Request (#400) и он не работает в консоли?

Я настроил приложение advanced, основные настройки лежат в common/config

Интересует конкретно компонент request, сейчас он выглядит вот так:
...
	'components' => [
		'request' => [
            'enableCsrfValidation' => false,
			'enableCookieValidation' => false
        ],
...


Значит в чем проблема. При текущих настройках не работает команда yii

exception 'yii\base\UnknownPropertyException' with message 'Setting unknown prop
erty: yii\console\Request::enableCsrfValidation' in F:\OpenServer\domains\portf.
ru\vendor\yiisoft\yii2\base\Component.php:193
Stack trace:
#0 F:\OpenServer\domains\portf.ru\vendor\yiisoft\yii2\BaseYii.php(517): yii\base
\Component->__set('enableCsrfValid...', false)
#1 F:\OpenServer\domains\portf.ru\vendor\yiisoft\yii2\base\Object.php(105): yii\
BaseYii::configure(Object(yii\console\Request), Array)
#2 F:\OpenServer\domains\portf.ru\vendor\yiisoft\yii2\BaseYii.php(373): yii\base
\Object->__construct(Array)
#3 F:\OpenServer\domains\portf.ru\vendor\yiisoft\yii2\base\Module.php(452): yii\
BaseYii::createObject(Array)
#4 F:\OpenServer\domains\portf.ru\vendor\yiisoft\yii2\base\Application.php(433):
 yii\base\Module->getComponent('request')
#5 F:\OpenServer\domains\portf.ru\vendor\yiisoft\yii2\base\Application.php(289):
 yii\base\Application->getRequest()
#6 F:\OpenServer\domains\portf.ru\yii(30): yii\base\Application->run()
#7 {main}


Поду что-то нужно подключить, но не как не могу понять что и куда. Дело в том, что проблема тольк ос консолью сайт работает.

Теперь делаем так:
...
	'components' => [
		'request' => [
            'enableCsrfValidation' => true,
			'enableCookieValidation' => true
        ],
...


Консоль по прежнему не работает, а при авторизации на сайте я попадаю в:
Bad Request (#400)
Не удалось проверить переданные данные.


При этом в сгенерированном html коде есть:
...
<meta name="csrf-param" content="_csrf">
<meta name="csrf-token" content="QlNMVC54c2YgAXwhcTQdBAY1FnlLNScwGyIZDWscRwByKyUQXxJLFQ==">
...
<form id="login-form" action="/admin/users/default/login" method="post">
<input type="hidden" name="_csrf" value="QlNMVC54c2YgAXwhcTQdBAY1FnlLNScwGyIZDWscRwByKyUQXxJLFQ==">  
...


Дальше если я просто закомментирую подключение этого компонента, то консоль заработает, а на сайте при авторизации по прежнему будет Bad Request (#400)

Подскажите, пожалуйста, в чем проблема?
  • Вопрос задан
  • 10020 просмотров
Решения вопроса 1
metamorph
@metamorph
Во-первых, не надо отключать csrf.

Во-вторых, у консольных приложений действительно нет параметра enableCsrfValidation - на то они и консольные :) Для консольных создавайте отдельный конфиг.

Ну и в-третьих, по поводу error400: у yii\web\Controller тоже есть такой параметр, попробуйте отключить его.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы