← Cloudflare Fundamentals / fundamentals / reference
Chybové odpovědi
Když Cloudflare nemůže dokončit požadavek, vygeneruje chybovou odpověď. Formát závisí na tom, co klient požaduje prostřednictvím Accept hlavička a na úrovni zóny Vlastní chyby konfigurace.
Ve výchozím nastavení jsou chybové odpovědi ve formátu HTML. Klienti, kteří požadují strukturovaný formát (například application/json, application/problem+json, nebo text/markdown) obdrží místo toho strojově čitelnou odpověď. Tato strojově čitelná odpověď zahrnuje všechny Kódy chyb řady 1xxx (které vracejí stavové kódy HTTP 4xx nebo 5xx v závislosti na chybě) a Cloudflare generovanými Chyby řady 5xx (500, 502, 504, 520-526). Odpovědi s chybami 5xx generované původním serverem předává Cloudflare klientovi beze změny.
Vyjednávání obsahu
Cloudflare volí formát odpovědi na základě klienta a jeho Accept hlavičku podle standardní Vyjednávání obsahu HTTP ↗. Pokud je přijatelných více formátů, faktory kvality (q hodnot) určují prioritu. Při stejné hodnotě kvality vítězí typ uvedený jako první.
Accept hlavička byla odeslána |
Formát odpovědi |
|---|---|
application/json |
JSON (application/json; charset=utf-8) |
application/problem+json |
JSON (application/problem+json; charset=utf-8) |
application/json, text/markdown;q=0.9 |
JSON (vyšší faktor kvality) |
text/markdown |
Markdown (text/markdown; charset=utf-8) |
text/markdown, application/json |
Markdown (stejná kvalita, vyhrává první uvedený) |
text/* |
Markdown |
text/html |
HTML |
*/* |
HTML |
| Nenastaveno | HTML |
Strukturované chybové odpovědi jsou dostupné ve všech plánech, včetně plánu Free. Vlastní pravidla chyb pro přepsání těchto odpovědí vyžadují placený plán Cloudflare.
Práce s vlastními chybami
Strukturované chybové odpovědi jsou výchozí pro zóny bez vlastní konfigurace chyb. Zóny, které používají Vlastní chyby si zachovávají plnou kontrolu nad tím, co klienti dostávají.
To, co klient obdrží, závisí na tom, které funkce vlastních chybových stránek máte pro svou zónu nakonfigurované. Podrobnosti najdete v následujících částech.
Žádná vlastní chybová stránka, žádná vlastní pravidla pro chyby
Toto je výchozí nastavení pro většinu zón. Cloudflare vrací svou výchozí chybovou odpověď ve formátu, který klient požaduje.
| Klient odesílá | Odpověď |
|---|---|
Accept: application/json |
Výchozí strukturovaná odpověď JSON od Cloudflare |
Accept: text/markdown |
Výchozí strukturovaná odpověď Markdown od Cloudflare |
Accept: text/html |
Výchozí chybová stránka HTML od Cloudflare |
Ne Accept hlavička |
Výchozí chybová stránka HTML od Cloudflare |
Nakonfigurována chybová stránka, žádná vlastní pravidla pro chyby
Na zóně je nahraná chybová stránka prostřednictvím Cloudflare dashboardu. Nejsou nakonfigurována žádná vlastní pravidla pro chyby. Chybová stránka se zobrazuje všem klientům bez ohledu na Accept hlavičku: Error Pages neprovádějí vyjednávání obsahu.
| Klient odesílá | Odpověď |
|---|---|
Accept: application/json |
Vaše vlastní chybová stránka HTML |
Accept: text/markdown |
Vaše vlastní chybová stránka HTML |
Accept: text/html |
Vaše vlastní chybová stránka HTML |
Ne Accept hlavička |
Vaše vlastní chybová stránka HTML |
Pokud chcete, aby agenti dostávali strukturované odpovědi, a zároveň si chcete zachovat vlastní HTML pro prohlížeče, přidejte Custom Error Rule, které odpovídá Accept hlavičku. Podrobnosti najdete v další části.
Nakonfigurovaná pravidla Custom Error Rules
Zóna má jeden nebo více Vlastní pravidla chyb (dostupné v placených plánech). Mají přednost před Error Pages. Určujete, co se zobrazí, komu a za jakých podmínek.
| Klient odesílá | Odpověď |
|---|---|
Accept: application/json |
Pokud se pravidlo Custom Error Rule shoduje, odešle se jeho obsah. Pokud se neshoduje žádné pravidlo, použije se Error Page (je-li nastavena), případně strukturovaná odpověď ve formátu JSON. |
Accept: text/markdown |
Pokud se pravidlo Custom Error Rule shoduje, odešle se jeho obsah. Pokud se neshoduje žádné pravidlo, použije se Error Page (je-li nastavena), případně strukturovaná odpověď ve formátu Markdown. |
Accept: text/html |
Pokud se pravidlo Custom Error Rule shoduje, odešle se jeho obsah. Pokud se neshoduje žádné pravidlo, použije se Error Page, případně výchozí HTML. |
Ne Accept hlavička |
Stejný záložní řetězec |
Custom Error Rules mohou porovnávat libovolnou hlavičku požadavku, včetně Accept, a může cílit na konkrétní chybové kódy. Ze stejné zóny tak můžete klientům API poskytovat JSON, agentům Markdown a prohlížečům HTML.
Příklad: Vraťte klientům API vlastní odpověď ve formátu JSON při chybě 522
Toto vlastní pravidlo pro chyby odpovídá chybám 522, kdy klient požaduje JSON:
Výraz: (http.response.code eq 522) and (any(http.request.headers["accept"][*] contains "application/json"))
Akce: Vraťte vlastní JSON odpověď ve vlastním formátu chyby.
Toto pravidlo má přednost před výchozí strukturovanou odpovědí JSON i před jakoukoli nakonfigurovanou chybovou stránkou. Klienti, kteří pravidlu neodpovídají (například prohlížeče požadující HTML), přejdou na chybovou stránku nebo výchozí odpověď Cloudflare.
Příklad: Vraťte agentům strukturované odpovědi a prohlížečům vlastní stránku HTML
Pokud má vaše zóna nastavenou Error Page, zobrazuje se všem klientům, včetně agentů požadujících JSON nebo Markdown. Aby agenti místo toho dostávali výchozí strukturované odpovědi Cloudflare, Error Page odstraňte. Bez Error Page Cloudflare respektuje Accept hlavičku automaticky: agenti dostanou strukturovaný JSON nebo Markdown a prohlížeče dostanou HTML.
Pokud potřebujete zachovat Error Page pro prohlížeče, ale agentům chcete poskytovat vlastní strukturovaný obsah, vytvořte Custom Error Rules, které odpovídají Accept hlavičku a poskytovat vlastní obsah ve formátu JSON nebo Markdown. Prohlížeče, které neodpovídají žádnému z pravidel, budou i nadále dostávat vaši vlastní chybovou stránku HTML.
Pořadí priority
Když Cloudflare vygeneruje chybovou odpověď, o tom, co klient obdrží, rozhoduje následující pořadí priorit:
- Vlastní pravidla chyb : Pokud pravidlo odpovídá podmínkám chyby a požadavku, je obsloužen obsah tohoto pravidla.
- Chybové stránky : Pokud je pro daný typ chyby nakonfigurována stránka Error Page a neodpovídalo žádné vlastní pravidlo chyby (Custom Error Rule), je stránka Error Page obsloužena jako HTML bez ohledu na
Accepthlavička. - Strukturované chybové odpovědi : Pokud neodpovídalo žádné vlastní pravidlo chyby a není nakonfigurována žádná stránka Error Page, Cloudflare obslouží svou výchozí odpověď ve formátu, který klient požadoval (JSON, Markdown nebo HTML).
Úplné pořadí priority, včetně pravidel na úrovni účtu oproti pravidlům na úrovni zóny, vlastních blokovacích odpovědí WAF a bezpečnostních výzev, najdete v Vlastní chyby dokumentace.
Příklady
JSON: 522 Connection timed out
{
"type": "https://developers.cloudflare.com/support/troubleshooting/http-status-codes/cloudflare-5xx-errors/error-522/",
"title": "Error 522: Connection timed out",
"status": 522,
"detail": "Cloudflare could not establish a TCP connection to the origin server. The TCP handshake timed out, which may indicate the origin is overloaded, firewalling Cloudflare, or unreachable at the network level.",
"instance": "9f140b785e57c458",
"error_code": 522,
"error_name": "connection_timeout",
"error_category": "origin",
"ray_id": "9f140b785e57c458",
"timestamp": "2026-04-24T09:22:40Z",
"zone": "example.com",
"cloudflare_error": true,
"retryable": true,
"retry_after": 120,
"owner_action_required": true,
"what_you_should_do": "**Wait and retry.** Back off for at least 120 seconds. If the error persists, the website operator should verify firewall rules and ensure the origin accepts connections from Cloudflare IP ranges.",
"footer": "This error was generated by Cloudflare on behalf of the website owner."
}Markdown: 522 Connection timed out
---
error_code: 522
error_name: connection_timeout
error_category: origin
status: 522
ray_id: 9f140b785e57c458
timestamp: 2026-04-24T09:22:40Z
zone: example.com
cloudflare_error: true
retryable: true
retry_after: 120
owner_action_required: true
---
# Error 522: Connection timed out
## What Happened
Cloudflare could not establish a TCP connection to the origin server. The TCP handshake timed out, which may indicate the origin is overloaded, firewalling Cloudflare, or unreachable at the network level.
## What You Should Do
**Wait and retry.** Back off for at least 120 seconds. If the error persists, the website operator should verify firewall rules and ensure the origin accepts connections from Cloudflare IP ranges.
---
This error was generated by Cloudflare on behalf of the website owner.Otestovat strukturované chybové odpovědi
Načtěte strukturovanou odpověď ve formátu JSON pro chybu 522:
curl --silent --compressed --header "Accept: application/json" \
--user-agent "TestAgent/1.0" --header "Accept-Encoding: gzip, deflate" \
"https://example.com/cdn-cgi/error/522" | jq .Načtěte strukturovanou odpověď ve formátu Markdown:
curl --silent --compressed --header "Accept: text/markdown" \
--user-agent "TestAgent/1.0" --header "Accept-Encoding: gzip, deflate" \
"https://example.com/cdn-cgi/error/522"Zkontrolujte přítomnost Retry-After hlavičku při chybě, kterou lze opakovat:
curl --silent --compressed --dump-header - --output /dev/null \
--header "Accept: application/json" --user-agent "TestAgent/1.0" \
--header "Accept-Encoding: gzip, deflate" \
"https://example.com/cdn-cgi/error/521" | grep -i retry-afterPole odpovědi
Odpovědi ve formátu JSON i Markdown obsahují stejnou sadu polí. Odpovědi JSON je vracejí jako plochý objekt, odpovědi Markdown je umisťují do YAML frontmatteru následovaného textovými částmi. Definice polí uvedené níže platí pro oba formáty.
Odpovědi JSON se řídí RFC 9457 (Problem Details for HTTP APIs) ↗. Jakýkoli HTTP klient, který rozumí Problem Details, dokáže analyzovat pět standardních členů (type, title, status, detail, instance) bez kódu specifického pro Cloudflare.
Členové standardu RFC 9457
| Pole | Typ | Popis |
|---|---|---|
type |
string | URI odkazující na dokumentaci Cloudflare k tomuto chybovému kódu. |
title |
string | Stručný souhrn, například "Error 522: Connection timed out". |
status |
celé číslo | Stavový kód HTTP dané odpovědi. |
detail |
string | Vysvětlení v prostém textu, co se stalo a která strana za to nese odpovědnost. |
instance |
string | Ray ID identifikující tento konkrétní výskyt chyby. |
Členové rozšíření Cloudflare
| Pole | Typ | Popis |
|---|---|---|
error_code |
celé číslo | Chybový kód Cloudflare (například 522, 1015). |
error_name |
string | Strojově čitelný název v snake_case (například connection_timeout, rate_limited). Stabilní, vhodné pro programové porovnávání. |
error_category |
string | Klasifikace poruch. Další informace naleznete v Kategorie chyb. Stabilní: vhodné pro programové porovnávání. |
ray_id |
string | Stejná hodnota jako instance. Uvedeno kvůli kompatibilitě se stávajícími nástroji Cloudflare. |
timestamp |
string | Časové razítko ve formátu ISO 8601 udávající, kdy chyba vznikla. |
zone |
string | Požadovaný hostitelský název. |
cloudflare_error |
boolean | Vždy true. Potvrzuje, že tuto chybu vygeneroval Cloudflare, nikoli origin server. |
retryable |
boolean | Zda je chyba dočasná a požadavek lze zopakovat. |
retry_after |
celé číslo nebo null | Počet sekund čekání před opakováním. Uvedeno pouze v případě, že retryable je true. Odpovídá Retry-After hodnota HTTP hlavičky. |
owner_action_required |
boolean | Zda musí provozovatel webu k vyřešení chyby podniknout nějaký krok. |
what_you_should_do |
string | Praktické pokyny pro klienta: co dělat dál, zda opakovat pokus a kdo může problém vyřešit. |
footer |
string | Řádek s atribucí. |
Struktura specifická pro Markdown
Odpovědi ve formátu Markdown umisťují tato pole do YAML frontmatter (mezi --- oddělovačů) a poté následují tři textové oddíly:
# Error {code}: {description}, nadpis s kódem chyby a stručným popisem.## What Happened, odpovídádetail.## What You Should Do, odpovídáwhat_you_should_do.
Frontmatter vynechává standardní členy RFC 9457 (type, title, instance) a footer pole, protože jsou buď redundantní vůči textu, nebo se na formát Markdown nevztahují.
Kategorie chyb
error_category pole klasifikuje chybu, takže klienti mohou řídit opakování požadavků a eskalaci, aniž by museli parsovat textová pole.
Kategorie chyb řady 5xx
| Kategorie | Kódy | Význam | Opakovat? |
|---|---|---|---|
origin |
502, 504, 520-524 | Zodpovědnost nese origin server. Přechodná porucha infrastruktury. | Ano. Zpomalte pomocí retry_after. |
cloudflare |
500 | Na straně Cloudflare došlo k interní chybě. Origin server nemusel být nutně jejím zdrojem. | Ano. Krátké opakování (30 s). |
ssl |
525, 526 | Konfigurace TLS origin serveru je vadná (selhání handshake nebo neplatný certifikát). | Ne. Opakování nepomůže, dokud operátor neopraví konfiguraci TLS. |
Kategorie chyb řady 1xxx
| Kategorie | Význam | Příklady kódů |
|---|---|---|
access_denied |
Blokování IP adres, blokování zemí, pravidla brány firewall | 1005, 1006, 1007, 1008, 1010, 1012, 1106-1109 |
rate_limit |
Omezení četnosti požadavků | 1015, 1025, 1027, 1200 |
dns |
Chyby překladu DNS | 1001, 1016 |
config |
Chyby konfigurace zóny nebo origin serveru | 1004, 1014, 1033, 1043, 1047, 1049 |
tls |
Chyby TLS na straně klienta (verze, šifra, certifikát) | 1017, 1028, 1029, 1044 |
legal |
Právní omezení (DMCA, blokace podle zemí) | 1026, 1039 |
worker |
Chyby skriptu Worker | 1042, 1100, 1101, 1102, 1103, 1104, 1105 |
rewrite |
Chyby pravidel přepisu URL | 1036, 1037 |
snippet |
Chyby konfigurace snippetů | 1201, 1202, 1203, 1204, 1205, 1206 |
unsupported |
Nepodporované funkce nebo protokoly | 1045 |
Hlavička Retry-After
Mezi opakovatelné chybové kódy patří standardní Retry-After ↗ HTTP hlavička odpovědi. Hodnota hlavičky v sekundách odpovídá retry_after pole v těle odpovědi.
Hodnoty Retry-After řady 5xx
| Kód | retry_after (v sekundách) |
|---|---|
| 500 | 30 |
| 502 | 60 |
| 504 | 120 |
| 520 | 60 |
| 521 | 120 |
| 522 | 120 |
| 523 | 120 |
| 524 | 120 |
| 525 | N/A (nelze opakovat) |
| 526 | N/A (nelze opakovat) |
Kódy, které nelze opakovat (525, 526), neobsahují Retry-After hlavička.
Hodnoty Retry-After řady 1xxx
Šest opakovatelných chybových kódů řady 1xxx generuje Retry-After:
| Kód | retry_after (v sekundách) |
Název chyby |
|---|---|---|
| 1004 | 120 | Chyba překladu DNS |
| 1015 | 30 | Rate limited |
| 1033 | 120 | Chyba Argo Tunnel |
| 1038 | 60 | Překročen limit hlaviček HTTP |
| 1200 | 60 | Limit připojení k mezipaměti |
| 1205 | 5 | Příliš mnoho přesměrování |
Všechny ostatní chybové kódy řady 1xxx nelze opakovat a neobsahují Retry-After hlavička.
Pokud pravidlo WAF pro omezení frekvence požadavků již nastavilo dynamickou Retry-After hodnota v odpovědi, má tato hodnota přednost před výchozí hodnotou.