navigation_failed
HTTP 422 · code: "navigation_failed" · type: https://docs.formfeed.dev/errors/navigation-failed
Ein url-Rendering konnte die Seite, die es nennt, nicht laden. Das Rendering wird als fehlgeschlagen aufgezeichnet und kostet nichts. detail nennt den Grund, oft mit der Meldung des Browsers selbst.
Beispiel
{
"type": "https://docs.formfeed.dev/errors/navigation-failed",
"title": "Navigation failed",
"status": 422,
"detail": "URL returned HTTP 404",
"code": "navigation_failed",
"location": null,
"render_id": "rnd_7da09ab6cd9946b798c187c2a9350852",
"request_id": "req_4b7c1e9a2f3d4c5b8a6e7f9012"
}
Häufige Ursachen
- Die Seite antwortete mit einem HTTP-Fehler, 400 oder höher (
URL returned HTTP 404). - Die Seite war nicht innerhalb von 30 Sekunden fertig geladen. Standardmäßig wartet Formfeed, bis das Netzwerk ruht; eine Seite, die ständig nachfragt, streamt oder eine Verbindung offen hält, kommt nie dorthin, und das Problem sagt
Timeout 30000ms exceeded. - Eine
http:-Adresse. Die API nimmt sie an, aber der Browser lädt nurhttps(scheme http: is not allowed). - Der Hostname lässt sich nicht auflösen, oder er löst auf eine private oder interne Adresse auf (
URL blocked: dns failure: …,URL blocked: resolves to private address …). Adressen, die schon dem Aussehen nach privat sind, werden früher abgelehnt, mitinvalid_request. - Das TLS-Zertifikat ist ungültig oder abgelaufen, oder der Server hat die Verbindung abgewiesen (
net::ERR_CERT_…,net::ERR_CONNECTION_REFUSED). - Eine Weiterleitung auf eine Adresse, die Formfeed nicht abruft.
- Die Seite verlangt eine Anmeldung oder blockiert automatisierte Browser und antwortet mit einer Fehlerseite oder einem Fehlerstatus. Ein
url-Rendering sendet keine Cookies und keine Header von Ihnen.
So beheben Sie es
- Öffnen Sie die URL in einem privaten Browserfenster von außerhalb Ihres Netzwerks.
- Setzen Sie bei Seiten, die eine Verbindung offen halten,
waitFor.networkIdleauffalse: Die Seite wird dann direkt nach ihremload-Ereignis gedruckt. Ergänzen SiewaitFor.selector, wenn ihr Inhalt später kommt. - Rendern Sie Seiten, die eine Anmeldung brauchen, stattdessen aus HTML: Holen Sie den Inhalt selbst und senden Sie ihn als
html.
Wiederholen?
Nur, wenn die Seite selbst ein vorübergehendes Problem hatte (eine 5xx-Antwort, eine Zeitüberschreitung eines langsamen Servers). Sonst erhält dieselbe Anfrage dieselbe Antwort. Senden Sie die Wiederholung mit einem neuen Idempotency-Key oder ohne: Eine 4xx-Antwort wird 24 Stunden unter ihrem Schlüssel gespeichert, der alte Schlüssel liefert also wieder dieses Problem. Siehe Wiederholen. Asynchrone Renderings wiederholt die Warteschlange bei diesem Code nicht.