Не работает CSRF при включённом YII_DEBUG

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
witzawitz
Сообщения: 23
Зарегистрирован: 2013.10.24, 03:08

Не работает CSRF при включённом YII_DEBUG

Сообщение witzawitz »

Внезапно обнаружился такой артефакт. Отключаю YII_DEBUG - всё ок, кука устанавливается, очищаю куки и включаю YII_DEBUG - не устанавливается кука, и, соответственно, валидация не работает.
С чем может быть связано?
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Не работает CSRF при включённом YII_DEBUG

Сообщение astronin »

а если еще раз отключить YII_DEBUG, кука установиться?
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Не работает CSRF при включённом YII_DEBUG

Сообщение astronin »

не совсем понятно, т.к. поумолчанию debug включен и у всех работает
может вы что-то еще добавляли?
Аватара пользователя
witzawitz
Сообщения: 23
Зарегистрирован: 2013.10.24, 03:08

Re: Не работает CSRF при включённом YII_DEBUG

Сообщение witzawitz »

Путём небольших изысканий было выяснено, что при включённом debug-е CSRF оказывается в response-е модуля (т.е. debug-а) и не устанавливается (не знаю, почему), в response самого приложения его при этом нет. Если же debug выключен, то CSRF кука находится в response приложения и нормально себе ставится.
Debug включен на девелоперских машинах, на продакшене выключен, конечно, но от этого не легче, ибо тестирование форм немного затруднено при этом.
У меня переписан afterAction для контроллера, но при его удалении ничего не меняется.
astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Не работает CSRF при включённом YII_DEBUG

Сообщение astronin »

попробуйте обновить фреймворк до последней версии и прочитать про те изменения которые были сделаны во фреймворке, там менялась работа с куками и с CSRF. может просто что-то у вас не настроено правильно
Аватара пользователя
witzawitz
Сообщения: 23
Зарегистрирован: 2013.10.24, 03:08

Re: Не работает CSRF при включённом YII_DEBUG

Сообщение witzawitz »

У меня стоит 2.0.3, проблема в том, что с точно такими же настройками и архитектурой приложения всё работает на похожем проекте, что явно даёт понять, что дело не в окружении.
У меня возникла мысль, что, может быть, кто-то сталкивался с похожей проблемой. Как появится время - буду копать дальше и отпишусь по результатам.
Аватара пользователя
witzawitz
Сообщения: 23
Зарегистрирован: 2013.10.24, 03:08

Re: Не работает CSRF при включённом YII_DEBUG

Сообщение witzawitz »

В общем, первым отправляется ответ от модуля debug-а вместе с заголовками, там кука не установлена (я ошиблась выше), вторым отправляется ответ от приложения, там кука установлена, но, поскольку заголовки уже отправлены в модуле debug-а, то фактически ни хедеры, ни куки второго ответа не отправляются.
Аватара пользователя
witzawitz
Сообщения: 23
Зарегистрирован: 2013.10.24, 03:08

Re: Не работает CSRF при включённом YII_DEBUG

Сообщение witzawitz »

Я решила проблему, запихнув в начало вьюхи

Код: Выделить всё

{$this->beginPage()} 
Я использую Smarty, раньше никогда не заморачивалась по поводу begin и end-ов, а тут end запихнула, а begin - нет.

В процессе изыскания узнала много нового :-)
Ответить