Как обрабатывать формы на Jamstack-сайтах с помощью Cloudflare Workers

Контактная форма — почти обязательный элемент любого сайта, но для статических сайтов на Jamstack она становится проблемой. Ведь у такого сайта нет серверной части, которая могла бы принять данные и отправить их на почту или в CRM. Разработчики часто ищут готовые сервисы, но они добавляют лишние зав

Как обрабатывать формы на Jamstack-сайтах с помощью Cloudflare Workers

Контактная форма — почти обязательный элемент любого сайта, но для статических сайтов на Jamstack она становится проблемой. Ведь у такого сайта нет серверной части, которая могла бы принять данные и отправить их на почту или в CRM. Разработчики часто ищут готовые сервисы, но они добавляют лишние зависимости и расходы. Решение есть: Cloudflare Workers позволяют создать собственный обработчик форм прямо на границе сети, с минимальными затратами и высокой скоростью. В этой статье мы подробно разберём, как это работает, какие есть подводные камни и как внедрить такое решение на практике.

Создание обработчика форм на Cloudflare Workers

Cloudflare Workers — это серверные функции, которые выполняются на периферийной сети Cloudflare, рядом с пользователем. Это означает, что ваш код будет работать мгновенно, без задержек, независимо от того, где находится посетитель. Чтобы создать обработчик форм, вам нужно написать простой JavaScript-код, который принимает POST-запрос от формы, проверяет данные и отправляет их на указанный адрес электронной почты или в сторонний сервис, например, Slack или Telegram.

Вот как это работает. Вы создаете Worker в панели управления Cloudflare или через CLI, привязываете его к маршруту вашего сайта (например, /api/contact) и пишете функцию, которая обрабатывает запрос. Внутри функции вы можете использовать встроенный API Cloudflare для отправки писем через сервис MailChannels или SendGrid, а также для записи данных в хранилище Workers KV. Это позволяет хранить заявки и просматривать их позже.

Код получается компактным и понятным. Например, вы проверяете, что поле email содержит валидный адрес, а поле message не пустое. Затем формируете письмо и отправляете его. Если что-то пошло не так, возвращаете ошибку с соответствующим статусом. Всё это занимает около 50–100 строк кода, что значительно меньше, чем создание полноценного бэкенда.

Какие есть альтернативы Cloudflare Workers для обработки форм?

Многие разработчики, сталкиваясь с проблемой форм на Jamstack, первым делом вспоминают о готовых сервисах вроде Formspree, Getform или FormSubmit. Эти сервисы предоставляют готовые эндпоинты, которые можно подключить к форме за пару минут. Однако у них есть существенные ограничения: бесплатные тарифы часто включают лимит на количество запросов в месяц, а при превышении лимита приходится платить. Кроме того, вы зависите от стороннего сервиса, который может изменить условия или прекратить работу. Cloudflare Workers, напротив, дают вам полный контроль и не требуют ежемесячной платы за небольшие проекты — до 100 000 запросов в день бесплатно. Это делает Workers привлекательной альтернативой для тех, кто хочет сохранить гибкость и не переплачивать.

Предыстория и контекст

Jamstack-подход стал популярен благодаря своей простоте и производительности. Сайты собираются в статические файлы, которые раздаются через CDN, поэтому они загружаются мгновенно и почти не подвержены взломам. Но статические сайты не умеют обрабатывать динамические запросы, такие как отправка форм, комментарии или поиск. Раньше разработчики использовали сторонние сервисы вроде Formspree или Getform, которые предоставляют готовые эндпоинты для форм. Однако такие сервисы имеют ограничения по количеству запросов и стоят денег при больших объёмах.

Cloudflare Workers появились в 2017 году и быстро стали популярным инструментом для выполнения кода на периферии. Они позволяют создавать API, редиректы, A/B-тесты и многое другое. В контексте Jamstack Workers идеально подходят для обработки форм, потому что они не требуют управления сервером, масштабируются автоматически и стоят копейки. По сути, вы получаете полный контроль над логикой обработки, но без необходимости арендовать VPS или настраивать Node.js-приложение.

Как это работает: пошаговый разбор

Давайте разберём, как именно устроен обработчик форм на Cloudflare Workers. Когда пользователь отправляет форму, браузер делает POST-запрос на URL вашего Worker. Worker получает данные, парсит их (обычно в формате FormData) и выполняет проверки. Затем, в зависимости от логики, он может отправить письмо через MailChannels (бесплатный сервис, интегрированный с Cloudflare), сохранить данные в KV-хранилище или передать их в CRM через API.

Для отправки почты MailChannels предоставляет простой HTTP API. Вы отправляете POST-запрос на их эндпоинт с данными письма, и они доставляют его. Это удобно, потому что не нужно настраивать SMTP-сервер. Если вам нужно хранить заявки, Workers KV — это глобально распределённое хранилище ключ-значение, которое отлично подходит для небольших объёмов данных. Вы можете записывать каждую заявку с уникальным ключом и потом просматривать их через админ-панель или API.

Важно отметить, что Workers работают на JavaScript, но вы также можете использовать TypeScript или другие языки, компилируемые в JavaScript. Cloudflare предоставляет удобный CLI (Wrangler), который позволяет разрабатывать, тестировать и деплоить Workers локально. Это делает процесс разработки быстрым и приятным.

Как защитить форму от спама с помощью Cloudflare Workers?

Спам — одна из главных проблем любых форм. К счастью, Cloudflare Workers позволяют реализовать несколько уровней защиты. Во-первых, вы можете добавить проверку на honeypot: скрытое поле, которое заполняют только боты. Если оно заполнено, запрос отклоняется. Во-вторых, можно использовать встроенные механизмы Cloudflare, такие как Turnstile (аналог reCAPTCHA), которые легко интегрируются в Worker. В-третьих, вы можете ограничить количество запросов с одного IP-адреса за определённый промежуток времени, используя Workers KV для хранения счётчиков. Всё это реализуется в рамках одного Worker и не требует дополнительных сервисов.

Кого затронет и как

Эта технология будет полезна разработчикам, которые создают сайты на Jamstack и не хотят зависеть от сторонних сервисов для форм. Например, фрилансеры и небольшие студии могут внедрить обработчик форм на своих проектах, сэкономив на подписках и получив больше контроля. Также это актуально для компаний, которым требуется кастомная логика обработки заявок, например, интеграция с внутренней CRM или Telegram-ботом.

Для бизнеса это означает снижение затрат и повышение надёжности. Cloudflare Workers работают на мощной инфраструктуре, поэтому вероятность отказа минимальна. К тому же, вы можете легко масштабировать решение при росте трафика. В России и СНГ Cloudflare работает стабильно, хотя иногда возникают задержки из-за геополитических факторов, но в целом это надёжный выбор.

Что будет дальше

Cloudflare постоянно развивает Workers, добавляя новые возможности: более быстрый запуск, поддержку WebAssembly, улучшенную интеграцию с другими сервисами. В ближайшее время стоит ожидать ещё больше готовых шаблонов и примеров для обработки форм, что упростит жизнь разработчикам. Также возможно появление встроенной поддержки отправки почты без сторонних сервисов, но пока MailChannels остаётся основным вариантом.

Если вы планируете реализовать обработку форм на Jamstack, сейчас самое время попробовать Cloudflare Workers. Это бесплатно для небольших проектов (до 100 000 запросов в день), а процесс настройки занимает не более часа. В результате вы получите собственный, быстрый и надёжный обработчик форм, который не требует сервера.

Итог

Cloudflare Workers — отличное решение для обработки форм на Jamstack-сайтах. Они позволяют создать лёгкий и быстрый обработчик без серверной части, с полным контролем над логикой. Это экономит деньги и время, а также повышает гибкость. Если вы разработчик, работающий с Jamstack, обязательно рассмотрите этот вариант — он может стать вашим основным инструментом для форм.