Pemecahan masalah
Solusi untuk error CORS, ketidakcocokan origin, challenge_required, 429, field yang tidak dikenal, dan error kuota.
Mulailah dari respons. Setiap jawaban dari Ikiform punya header X-Request-Id dan, untuk error, error.code yang stabil. Perintah curl ini menampilkan keduanya, dari origin yang sama dengan yang akan dikirim situs Anda:
curl -i https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Origin: https://example.com" \
-d '{"email":"ada@example.com"}'Melihat error 5xx atau timeout dari Ikiform sendiri? Periksa status.ikiform.com untuk insiden yang sedang terjadi terlebih dahulu.
Browser menyatakan CORS memblokir request
Endpoint kiriman mengizinkan semua origin, jadi kegagalan CORS yang sungguhan biasanya berarti request tidak pernah sampai ke Ikiform, atau dikirim ke URL yang salah.
- Pastikan URL-nya
https://ikiform.com/f/<formId>dengan IDfrm_lengkap, misalnyafrm_xxxxxxxxxxxxxxxx, dan tanpa path tambahan di belakangnya. - Anda memanggil
/api/v1dari browser. REST API sengaja menolak browser; panggil dari server Anda. - Ad blocker, ekstensi privasi, atau proxy perusahaan memblokir request. Coba jendela privat tanpa ekstensi.
Content-Security-Policymilik situs Anda sendiri memblokirnya. Tambahkanhttps://ikiform.comkeconnect-src, dan keform-actionuntuk kiriman HTML biasa.
Periksa preflight secara langsung; seharusnya menjawab 204 dengan origin Anda dipantulkan kembali:
curl -i -X OPTIONS https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx \
-H "Origin: https://example.com" \
-H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: content-type"Kiriman masuk ke spam dengan origin_mismatch
Formulir punya domain yang diizinkan dan kiriman berasal dari tempat lain. Dashboard menampilkan origin_mismatch di antara alasan spam.
- Tambahkan setiap domain tempat formulir disajikan, termasuk
www, staging, dan domain pratinjau. Subdomain dari domain yang tercantum sudah otomatis cocok. - Tambahkan
localhostselama pengembangan lokal. - Kiriman dari server Anda sendiri tidak membawa
Origin. Kirim secret key, yang melewati pemeriksaan ini. - Jika Reject dipilih alih-alih Mark as spam, kiriman yang sama mendapat
403 origin_not_allowed.
403 challenge_required
Pemeriksaan spam formulir diatur ke Ikiform dan kiriman tidak punya token Turnstile.
- Kode browser: panggil
challenge(formId)dari SDK tepat sebelum setiap kiriman, dan berikan tokennya kesubmitsebagaiturnstileToken. - Kode server: kirim
Authorization: Bearer ik_sk_...dengan secret key; secret key melewati pemeriksaan ini. - Kiriman HTML biasa tidak pernah melihat kode ini; mereka mendapat halaman pemeriksaan. Jika Anda melihatnya dari kiriman formulir, ada sesuatu yang mengirim
Accept: application/json. - Menguji dengan curl? Matikan pemeriksaan untuk formulir tes, atau gunakan secret key.
403 captcha_failed berarti token dikirim tetapi gagal diverifikasi. Token hanya sekali pakai dan kedaluwarsa setelah 300 detik, jadi ambil token baru untuk setiap percobaan.
429 rate_limited
- Baca
Retry-Afterdan tunggu selama jumlah detik itu. - Menguji secara manual? Preset Standard mengizinkan 5 kiriman per menit dari satu IP, dan 3 dalam 10 detik. Ubah formulir tes ke Relaxed.
- Mengirim dari server Anda untuk setiap pengunjung? Semua kiriman berbagi IP server Anda. Kirim dari browser, atau pilih Relaxed atau Custom.
- Banyak orang di balik satu jaringan kantor atau acara juga berbagi IP. Relaxed mengizinkan 20 per menit.
422 dengan Unknown field
Formulir punya field yang didefinisikan dan kiriman mengirim nama yang tidak ada di definisi. error.fields menyebutnya, misalnya { "website": ["Unknown field \"website\""] }.
- Tambahkan field ke definisi, atau hapus input-nya.
- Ganti nama input agar diawali
_jika hanya penanda untuk Anda; nama reserved dibuang, bukan divalidasi. - Pastikan nama honeypot sesuai dengan pengaturan Honeypot field formulir.
- ID field ditulis dalam snake_case huruf kecil:
firstNamedi markup Anda tidak sama denganfirst_namedi definisi.
429 quota_exceeded
Workspace menerima 2 kali batas bulanannya bulan ini dan berhenti menerima kiriman sampai bulan berikutnya dimulai atau workspace upgrade. Lihat Pemakaian bulanan.
Kiriman tidak muncul
- Cari di filter spam. Spam mendapat respons sukses biasa, jadi pengunjung tidak bisa membedakannya.
- Pastikan formulir tidak dijeda, dan ID di
actionAnda sesuai dengan dashboard. - Kiriman browser yang menampilkan halaman error Ikiform berarti ditolak; halaman itu mencantumkan alasannya.
Webhook gagal
no_matching_signature: verifikasi terhadap body mentah, sebelum JSON diurai, dan pastikan Anda menyalin secretwhsec_yang benar. Tempel sebuah pengiriman ke verifikator.timestamp_too_old: jam server Anda tidak tepat, atau Anda mengirim ulang pengiriman lama.- Timeout: jawab dalam 15 detik dan kerjakan pekerjaan yang lambat setelahnya.
- Redirect tidak diikuti. Gunakan URL final, termasuk garis miring di akhir yang diharapkan framework Anda.
- Endpoint dinonaktifkan setelah 5 hari gagal atau karena
410. Perbaiki, lalu aktifkan kembali dari halaman endpoint.