Fehlerbehebung
Lösungen für CORS-Fehler, Origin-Abweichungen, challenge_required, 429er, unbekannte Felder und Kontingentfehler.
Fang mit der Antwort an. Jede Antwort von Ikiform hat einen Header X-Request-Id und bei Fehlern einen stabilen error.code. Dieser curl-Befehl zeigt beides, vom selben Origin, von dem deine Site senden würde:
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"}'Siehst du 5xx-Fehler oder Timeouts von Ikiform selbst? Prüf zuerst status.ikiform.com auf aktuelle Störungen.
Der Browser meldet, dass CORS den Request blockiert hat
Der Einsendungs-Endpunkt erlaubt jeden Origin, ein echter CORS-Fehler bedeutet daher meist, dass der Request Ikiform nie erreicht hat oder an die falsche URL ging.
- Prüf, ob die URL
https://ikiform.com/f/<formId>mit der vollständigenfrm_-ID ist, zum Beispielfrm_xxxxxxxxxxxxxxxx, ohne angehängten Pfad. - Du rufst
/api/v1aus einem Browser auf. Die REST-API lehnt Browser absichtlich ab; ruf sie von deinem Server aus auf. - Ein Adblocker, eine Datenschutz-Erweiterung oder ein Firmen-Proxy hat den Request blockiert. Probier ein privates Fenster ohne Erweiterungen.
- Die eigene
Content-Security-Policydeiner Site blockiert ihn. Fügehttps://ikiform.comzuconnect-srchinzu, und für einfache HTML-Posts zuform-action.
Prüf den Preflight direkt; er sollte mit 204 antworten und deinen Origin zurückgeben:
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"Einsendungen landen mit origin_mismatch im Spam
Das Formular hat erlaubte Domains und der Post kam von woanders. Das Dashboard zeigt origin_mismatch unter den Spam-Gründen.
- Füge jede Domain hinzu, von der das Formular ausgeliefert wird, einschließlich
www, Staging- und Preview-Domains. Subdomains einer eingetragenen Domain passen bereits. - Füge
localhosthinzu, während du lokal entwickelst. - Posts von deinem eigenen Server tragen kein
Origin. Sende einen Secret Key, der die Prüfung überspringt. - Wenn Reject statt Mark as spam gewählt ist, erhalten dieselben Posts
403 origin_not_allowed.
403 challenge_required
Die Spamprüfung des Formulars steht auf Ikiform und der Post hatte kein Turnstile-Token.
- Browser-Code: Ruf
challenge(formId)aus dem SDK direkt vor jedem Absenden auf und übergib das Token alsturnstileTokenansubmit. - Server-Code: Sende
Authorization: Bearer ik_sk_...mit einem Secret Key; Secret Keys überspringen die Prüfung. - Einfache HTML-Posts sehen diesen Code nie; sie erhalten stattdessen die Prüfseite. Wenn du ihn bei einem Formular-Post siehst, sendet etwas
Accept: application/json. - Testest du mit curl? Schalte die Prüfung für ein Testformular ab, oder nutze einen Secret Key.
403 captcha_failed bedeutet, dass ein Token gesendet, aber nicht verifiziert wurde. Tokens sind einmalig gültig und laufen nach 300 Sekunden ab, also hol dir für jeden Versuch ein neues.
429 rate_limited
- Lies
Retry-Afterund warte so viele Sekunden. - Testest du von Hand? Die Voreinstellung Standard erlaubt 5 Posts pro Minute von einer IP und 3 in 10 Sekunden. Stell ein Testformular auf Relaxed um.
- Sendest du für jeden Besucher von deinem Server? Alle Posts teilen sich die IP deines Servers. Sende aus dem Browser, oder wähle Relaxed oder Custom.
- Viele Menschen hinter einem Büro- oder Event-Netzwerk teilen sich ebenfalls eine IP. Relaxed erlaubt 20 pro Minute.
422 mit Unknown field
Das Formular hat definierte Felder und der Post hat einen Namen gesendet, der nicht in der Definition steht. error.fields nennt ihn, zum Beispiel { "website": ["Unknown field \"website\""] }.
- Füge das Feld zur Definition hinzu, oder entferne den Input.
- Benenne den Input so um, dass er mit
_beginnt, wenn er nur eine Markierung für dich ist; reservierte Namen werden verworfen, nicht validiert. - Prüf, ob der Honeypot-Name zur Einstellung Honeypot field des Formulars passt.
- Feld-IDs sind snake_case in Kleinbuchstaben:
firstNamein deinem Markup ist nicht dasselbe wiefirst_namein der Definition.
429 quota_exceeded
Der Workspace hat diesen Monat das Doppelte seines monatlichen Limits erhalten und nimmt keine Einsendungen mehr an, bis der nächste Monat beginnt oder der Workspace upgradet. Siehe Monatliche Nutzung.
Einsendungen tauchen nicht auf
- Schau unter dem Spamfilter nach. Spam erhält eine normale Erfolgsantwort, daher merkt der Besucher nichts.
- Prüf, ob das Formular nicht pausiert ist und ob die ID in deinem
actionmit dem Dashboard übereinstimmt. - Ein Browser-Post, der die Fehlerseite von Ikiform zeigt, wurde abgelehnt; die Seite nennt den Grund.
Webhooks schlagen fehl
no_matching_signature: Verifiziere gegen den rohen Body, vor jedem JSON-Parsing, und prüf, ob du das richtigewhsec_-Secret kopiert hast. Füge eine Zustellung in den Verifizierer ein.timestamp_too_old: Die Uhr deines Servers geht falsch, oder du spielst eine alte Zustellung erneut ein.- Timeouts: Antworte innerhalb von 15 Sekunden und erledige langsame Arbeit danach.
- Weiterleitungen werden nicht gefolgt. Nutze die endgültige URL, einschließlich des abschließenden Schrägstrichs, den dein Framework erwartet.
- Der Endpunkt wurde nach 5 Tagen mit Fehlern oder einem
410deaktiviert. Behebe das Problem und schalte ihn dann auf der Seite des Endpunkts wieder ein.