Не могу найти указанный ключ формы (action)
В процессе апгрейда некоторых MODX сайтов на поддержку Google Recaptcha 3 в отправке форм обратной связи столкнулся с ошибкой «Не могу найти указанный ключ формы (action)». Причина такого сообщения чаще всего кроется в наличии ненужного кеша. Но Ajax Form запускался некешированным, ошибок в формах отправки не было, а проблема — была :)
Достаточно быстро выяснилась причина: сайт кешировался средствами nginx через директиву «fastcgi_cache». Проблема не проявлялась, если сессия была авторизована в админке, потому что тогда включалось правило «fastcgi_no_cache/fastcgi_cache_bypass $http_authorization». Для решения проблемы потребовалось объявить в секции «server» переменную «set $nouse_nginx_cache 1», прибавить её к исключениям «fastcgi_no_cache/fastcgi_cache_bypass» и добавить в секцию «location @php» правило:
if ($http_x_requested_with != "XMLHttpRequest") {
set $nouse_nginx_cache 1;
}
Правило nginx ловит ajax запросы и при их обработке не обращается к кэшу сайта.