Blog
Kako dodati kontakt formu na Cloudflare Pages
· 3 min čitanja
Cloudflare Pages je brz i velikodušan static hosting - pošaljete repozitorijum, dobijete globalni deploy, gotovo. Ono što nema jeste nešto poput Netlify Forms: nikakva ugrađena usluga koja skenira vaš HTML u potrazi za <form> tagom i počinje da prikuplja unose. Deployujte običnu HTML kontakt formu takvu kakva jeste na Cloudflare Pages, i POST zahtev nema kuda da ode. Evo zašto, i dva načina da to rešite.
Zašto Cloudflare Pages nema nativni proizvod za forme
Cloudflare Pages je hosting za statičke fajlove sa opcionim slojem Functions dodatim za dinamičke rute - to nije platforma za obradu formi. Netlify-jeva funkcija za forme radi tako što analizira vaš build izlaz u trenutku deploya i dodeljuje skriveni backend svakoj pronađenoj formi; Cloudflare Pages ne radi takvu analizu. Vaši build artefakti su samo fajlovi na CDN-u. Ako formi treba mesto kome će slati podatke, to mesto morate sami napraviti ili pozajmiti. To verovatno nije praznina koju će Cloudflare popuniti - Pages je namerno ograničen na statičke resurse plus tanak serverless sloj, a ne na pipeline za parsiranje formi.
Opcija 1: napišite sopstvenu Pages Function
Cloudflare Pages podržava Functions - male handlere u stilu Workers-a koji se nalaze u direktorijumu /functions i izvršavaju se na Cloudflare-ovom edge-u. Mogli biste dodati functions/api/contact.ts koji čita telo POST zahteva, validira ga, filtrira spam, šalje imejl (preko API-ja nekog provajdera, pošto Workers ne može da uspostavlja sirove SMTP konekcije), i možda upisuje u KV ili D1 radi skladištenja. To radi, i sve ostaje unutar jednog Cloudflare projekta. Ali sada vi održavate validaciju, filtriranje spama, skladištenje i slanje imejlova - tačno onaj backend koji je static hosting trebalo da vas poštedi da pišete.
Opcija 2: usmerite formu na hostovan backend (preporučeno)
Brži put je da POST zahtev pošaljete usluzi napravljenoj tačno za ovo. Zadržite svoj markup, dodajte jedan atribut:
<form action="https://formhook.app/f/YOUR_API_KEY" method="POST">
<input type="text" name="name" required />
<input type="email" name="email" required />
<textarea name="message" required></textarea>
<button type="submit">Send</button>
</form>To je cela integracija. Nema Function-a, nema Worker-a, nema email API ključeva o kojima treba brinuti. Unosi se pojavljuju u dashboard-u i mogu da pokrenu web push obaveštenje - uključujući na iOS-u, čim se sajt doda na početni ekran. Zaštita od spama je podrazumevano uključena: honeypot polje i ograničavanje broja zahteva zaustavljaju većinu spama pre nego što stigne do vas, a za nešto ozbiljnije napade možete dodati i Cloudflare Turnstile - Cloudflare-ov sopstveni CAPTCHA koji čuva privatnost, sasvim prikladan par za formu koja živi na Cloudflare Pages sajtu. Unosi i otpremljeni fajlovi se čuvaju na infrastrukturi u EU. Ništa od ovoga ne zavisi od toga kako je napravljen ostatak sajta: Astro, obični HTML, Next.js static export, Hugo - šta god da generiše markup, tag forme ostaje isti, a deploy se ne menja.
Kako doći do svog endpoint-a
- Registrujte se i napravite formu u dashboard-u - kartica nije potrebna.
- Kopirajte jedinstveni URL forme (izgleda kao
https://formhook.app/f/fh_xxxxxxxx). - Nalepite ga u
actionatribut vaše postojeće<form>. - Uradite commit i deploy kao i inače.
Besplatni paket pokriva 250 unosa mesečno, što je više nego dovoljno za većinu kontakt formi. Pogledajte stranicu sa cenama da vidite šta nudi Pro paket ako vam kasnije zatrebaju otpremanje fajlova ili verifikovan domen za slanje.
Funkcionalna forma u jednoj liniji
Hostovano u EU, unosi se čuvaju zauvek, push obaveštenja na svakom paketu.
Počnite besplatnoBez kreditne kartice · pročitajte dokumentaciju
Nastavite čitanje
- Alternativa za Netlify Forms: form backend koji radi svudaNetlify Forms radi samo ako je vaš sajt build-ovan i deploy-ovan na Netlify-ju. Evo šta je za to potrebno, zašto to vezuje vaše forme za hosting, i kako host-nezavisan form backend izbegava taj problem.
- Kako dodati kontakt formu na GitHub PagesGitHub Pages ne pokreće serverski kod, ali ipak možete imati funkcionalnu kontakt formu. Upoređujemo tri pristupa, uz rešenje za minut kopiranja i lepljenja.
- Serverless kontakt forme: šta "serverless" ovde zapravo znači"Serverless" se koristi za dva različita podešavanja kontakt forme - funkciju koju sami pišete, ili backend koji uopšte ne pišete. Evo prave razlike.