YII2: Bad Request (#400) Unable to verify your data submissionYII2:

Такая ошибка:

Bad Request (#400) Unable to verify your data submissionYII2

может возникнуть при принудительном вызове формы с POST или GET параметрами со страницы сайта. Например:

В контроллере сайта код вида :

Как раз и приведет к подобной ошибке:

Это своеобразная защита фреймворка от потенциального флуда. Вариантов решения несколько:

Отключить проверку CSRF глобально:

Отключить проверку для конкретного контроллера:

Или воспользоваться ПРАВИЛЬНЫМ по мнению фреймворка методом:

Синхронный запрос через fetch

Да, знаю, плохо, отвратительно и всё такое. Но иногда нужно. Например мне понадобилось при написании Service Worker, для возможности подмены запрашиваемого для загрузки url.. Реализовал так:

Map api yandex: иконка кластера в виде круговой диаграммы

Задача: отобразить на карте иконки кластеров в виде диаграммы построенной на основании сумм неких значений

Решение:

Используя библиотеку PieChartGD.php создадим файл вывода картинки (PHP):

Далее создадим функцию отображения кластера (JavaScript):

И перед началом отрисовки меток, настроим кластеризацию:

В результате получим что-то вроде:

JavaScript: перехват всех http/https запросов страницы

Прилетела задача перехватить URL всех загрузок тайлов на странице с размещенной Яндекс картой. В принципе если бы был простой случай, то всё решилось бы созданием прототипа для функции XMLHttpRequest , что-то в духе:

Но возник один нюанс, карта располагается в iframe, а прототипы «вниз» не распространяются. Единственным способом осталось написать сервис Service Worker, который будет отлавливать все запросы..

На странице добавляем функцию загрузки сервиса:

Далее в sw.js добавим слушательсобытия fetch, и реализацию отправки перехваченых url на сервер:

Серверная часть woodpecker.php:

В результате в файл url.txt на сервере пишутся все запрошенные url.

Отладка сервиса в FireFox возможна на вкладке about:debugging#/runtime/this-firefox, ищем там свой сервис, нажимаем «исследовать»

Rbot: парсер данных с госуслуг

На днях довелось попробовать в работе специализированную платформу для написания «роботов» — RPA Bot. По сути это хорошо документированная надстройка на Selenium. В базе позволяет писать «роботов» на Python, Node.js и PHP. На сайте ОЧЕНЬ хорошая документация по всему функционалу с примерами, а потому роботов писать гораздо приятнее чем при использовании «чистого» Selenium. Это плюс. Из минусов — отсутствие версии под Linux и конский ценник. Ну если первое разработчики усиленно пилят, то второе лично мне фиолетово (босс платит 😉 )

В ходе реализации очень понравилась функция save_url_to_file, аналога которой в Selenium я не нашел в своё время, а потому приходилось изобретать велосипед. Ну скорее всего конечно это то-же «велосипед» (ну логично, проект то на основе Selenium), но сделанный «штатно». К сожалению функция не отрабатывает, если закачька происходит с использованием Redirect 301. потому в случае необходимости можно воспользоваться таким вариантом закачки:

1 2 3 4 5 6 52