Skip to content

Commit 068433c

Browse files
TownLakedknechtpedrosousadanielegmhannes-cf
authored
Dane/support knowledge gaps - check with SRhea before approving (#29782)
* Add cache troubleshooting for login flows * Expand DNS troubleshooting guidance * Expand registrar transfer troubleshooting * Document Origin CA expiry alert limitation * Add Cloudflare One troubleshooting details * Add WAF rule interaction guidance * Document AWS route issue for 523 * Add HTTP/3 troubleshooting guidance * Fix link URL * WAF updates * Removed incorrect difference * Update phase-interactions.mdx (#29831) * [DNS] Expand negative caching troubleshooting section (#29833) * [DNS] Expand negative caching troubleshooting for newly created records * [DNS] Add dig example to check negative cache TTL --------- Co-authored-by: Dane Knecht <dane@cloudflare.com> Co-authored-by: Pedro Sousa <680496+pedrosousa@users.noreply.github.com> Co-authored-by: danielegm <74369360+danielegm@users.noreply.github.com> Co-authored-by: Hannes <105781579+hannes-cf@users.noreply.github.com>
1 parent 993f68b commit 068433c

File tree

12 files changed

+338
-1
lines changed

12 files changed

+338
-1
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
---
2+
title: Dynamic content and login issues
3+
pcx_content_type: troubleshooting
4+
description: Troubleshoot login failures, missing session cookies, and challenge loops caused by caching dynamic content.
5+
sidebar:
6+
order: 2
7+
---
8+
9+
Dynamic pages such as login forms, checkout flows, and authenticated application routes can break when they are cached too aggressively.
10+
11+
Common symptoms include:
12+
13+
- Users can load the login page, but the sign-in form fails after submission.
14+
- Sessions do not persist after a successful sign-in.
15+
- The origin sends a `Set-Cookie` header, but the browser never stores the cookie.
16+
- A challenge page appears, but after solving it the user returns to the login page or loses form state.
17+
18+
## Cached login page strips session cookies
19+
20+
One common cause is a [Cache Rule](/cache/how-to/cache-rules/) or legacy Page Rule configured to cache dynamic HTML.
21+
22+
This usually happens when all of the following are true:
23+
24+
- The page is configured as **Eligible for cache** or **Cache Everything**.
25+
- The response is dynamic HTML such as `/login` or `/account`.
26+
- The origin sends a `Set-Cookie` header.
27+
- An [Edge TTL](/cache/how-to/cache-rules/settings/#edge-ttl) or status-code TTL overrides origin cache directives.
28+
29+
In this configuration, Cloudflare can cache the response and remove the `Set-Cookie` header before the response is stored at the edge. As a result, the browser receives the login page but never gets the session cookie required for the next request.
30+
31+
### How to confirm
32+
33+
Check the response for the login page or other dynamic route.
34+
35+
If you see both of the following, the page is probably cached when it should not be:
36+
37+
- `CF-Cache-Status: HIT` or `CF-Cache-Status: EXPIRED`
38+
- No `Set-Cookie` header in the response, even though your origin usually sets one
39+
40+
You may also see framework-specific failures after form submission, for example:
41+
42+
- A redirect back to the login page
43+
- A `403` or `500` after sign-in
44+
- CSRF validation errors
45+
- Missing server-side session state
46+
47+
This issue is common with frameworks that rely on a session or CSRF cookie on the first page load, including JavaServer Faces, ASP.NET, PHP session handlers, Django, Rails, and Laravel.
48+
49+
### Resolution
50+
51+
Do not cache login pages or other authenticated HTML.
52+
53+
Instead:
54+
55+
1. Restrict **Eligible for cache** or **Cache Everything** to static paths only.
56+
2. Add a more specific Cache Rule that bypasses or disables caching for routes such as `/login`, `/account`, `/cart`, `/checkout`, and application API paths.
57+
3. If the origin must control caching, remove any Edge TTL override that forces the page to be cached.
58+
4. Verify the fixed response now returns `CF-Cache-Status: DYNAMIC`, `MISS`, or `BYPASS`, and preserves `Set-Cookie`.
59+
60+
For more information on cookie behavior, refer to [Interaction of Set-Cookie response header with Cache](/cache/concepts/cache-behavior/#interaction-of-set-cookie-response-header-with-cache).
61+
62+
## Challenge loops on login or form flows
63+
64+
Security challenges can also interrupt dynamic flows.
65+
66+
Two common patterns are:
67+
68+
- A challenge is triggered on the initial `GET` request for the login page. The user solves the challenge, but the application loses the original session or CSRF context.
69+
- A challenge is triggered on the `POST` request that submits the login form or other sensitive action. The browser may have to repeat the request after the challenge, which can break the original form submission.
70+
71+
### How to confirm
72+
73+
Check whether a [WAF custom rule](/waf/custom-rules/), [managed rule](/waf/managed-rules/), or [rate limiting rule](/waf/rate-limiting-rules/) applies to the login path.
74+
75+
If the issue only affects routes such as `/login`, `/signin`, `/checkout`, or `/api/auth/*`, and the application works when the challenge is disabled for those paths, the challenge is likely interrupting the flow.
76+
77+
### Resolution
78+
79+
Use one of the following approaches:
80+
81+
1. Exclude the login or form submission path from the challenge rule.
82+
2. Narrow the rule expression so it applies to suspicious traffic only.
83+
3. If you must protect the route, use a less disruptive control on the page load and apply stronger actions elsewhere in the flow.
84+
85+
When debugging, also verify that rules are not matching Cloudflare-generated paths such as `/cdn-cgi/*`.
86+
87+
For more information on challenge-related behavior, refer to [Rules troubleshooting](/rules/reference/troubleshooting/) and [Cloudflare WAF troubleshooting](/waf/troubleshooting/).

src/content/docs/cloudflare-one/integrations/identity-providers/one-time-pin.mdx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,14 @@ By design, blocked users will not receive an email. The login page will always s
8585

8686
Access only logs an authentication attempt after the user enters a code. If the user enters their email but never submits a code, the event will not appear in your [audit logs](/cloudflare-one/insights/logs/dashboard-logs/access-authentication-logs/#authentication-logs).
8787
:::
88+
89+
## OTP behavior and limits
90+
91+
Keep the following behavior in mind when troubleshooting OTP logins:
92+
93+
- Each PIN is single-use.
94+
- Requesting a new PIN invalidates the previous PIN.
95+
- Cloudflare only sends the email if the user is allowed by an Access policy.
96+
- Third-party mail security tools may consume the link before the user does, which makes the code appear already used.
97+
98+
If users repeatedly fail to sign in, request a fresh code and verify that your mail filtering or link-scanning product is allowlisting `noreply@notify.cloudflare.com`.

src/content/docs/cloudflare-one/networks/connectors/cloudflare-tunnel/troubleshoot-tunnels/common-errors.mdx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,16 @@ The tunnel status only reflects the connection between `cloudflared` and the Clo
4545

4646
Long-lived connections initiated through Cloudflare One, such as SSH sessions, can last up to eight hours. However, disruptions along the service path may result in more frequent disconnects. Often, these disconnects are caused by regularly scheduled maintenance events such as data center, server, or service updates and restarts. If you believe these events are not the cause of disconnects in your environment, collect the relevant [client logs](/cloudflare-one/team-and-resources/devices/cloudflare-one-client/troubleshooting/diagnostic-logs/) and [Tunnel logs](/cloudflare-one/networks/connectors/cloudflare-tunnel/monitor-tunnels/logs/) and contact Support.
4747

48+
If the disconnects mainly affect idle SSH sessions, WebSocket connections, or other long-lived connections, the transport protocol may be relevant.
49+
50+
When `cloudflared` uses QUIC, idle sessions can be more sensitive to network devices that aggressively time out UDP traffic. If idle connections drop repeatedly, try one or more of the following:
51+
52+
- Configure application-layer keepalives, such as `ServerAliveInterval` for SSH.
53+
- Test with `cloudflared` set to `protocol: http2`.
54+
- Review local firewalls, NAT devices, and upstream network equipment for short UDP idle timers.
55+
56+
For connection setup failures caused by blocked QUIC traffic, refer to the QUIC troubleshooting sections above.
57+
4858
## `ping` and `traceroute` commands do not work.
4959

5060
To ping an IP address behind Cloudflare Tunnel, your system must allow ICMP traffic through `cloudflared`. For configuration instructions, refer to the [ICMP proxy documentation](/cloudflare-one/traffic-policies/proxy/#icmp).
@@ -61,4 +71,3 @@ If you added a [multi-level subdomain](/cloudflare-one/networks/connectors/cloud
6171

6272

6373
For more information on Tunnel errors, view your [Tunnel logs](/cloudflare-one/networks/connectors/cloudflare-tunnel/monitor-tunnels/logs/) or [contact Cloudflare Support](/support/contacting-cloudflare-support/).
64-

src/content/docs/cloudflare-one/team-and-resources/users/scim.mdx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,13 @@ Cloudflare Access can automatically deprovision users from Zero Trust after they
2828

2929
To set up SCIM for Zero Trust, refer to our [SSO integration](/cloudflare-one/integrations/identity-providers/) guides.
3030

31+
## Common provider-specific issues
32+
33+
SCIM behavior depends on the identity provider configuration as well as Cloudflare.
34+
35+
Common issues include:
36+
37+
- **Okta**: User sync and group sync are separate. Make sure **Push Groups** is configured if you expect groups to appear in Zero Trust policies.
38+
- **Microsoft Entra ID**: Group sync only occurs for groups included in the provisioning scope. The `userName` attribute should match the user's email address in Cloudflare One.
39+
40+
If users appear but groups do not, verify the IdP-side SCIM app first before troubleshooting Cloudflare policy behavior.

src/content/docs/dns/troubleshooting/dns-issues.mdx

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,62 @@ In rare cases, the DNS resolver in the client requesting the URL might fail to r
5757

5858
Reload the page after a short wait to note if the problem disappears. This issue is unrelated to Cloudflare, but using [Cloudflare's DNS resolver](/1.1.1.1/setup/) may help. Contact your hosting provider for additional help with your current DNS resolver.
5959

60+
### Newly created record still does not resolve
61+
62+
If you recently created a DNS record and resolvers still return `NXDOMAIN` (Non-Existent Domain) or no answer, it is likely because a negative response is currently stored in the resolver's cache.
63+
64+
When a resolver is queried for a hostname that has no DNS records yet, it caches the empty response so it does not have to ask the authoritative nameserver again immediately. This is known as negative caching.
65+
66+
For newly created records:
67+
68+
- The resolver might not have cached the new record yet. Instead, it is using a prior `NXDOMAIN` cache entry that says "this record does not exist," which was generated if the hostname was queried before you created the record.
69+
- The duration of this negative cache is determined by the `MINIMUM` field in your zone's SOA record (per [RFC 2308](https://datatracker.ietf.org/doc/html/rfc2308)), not the TTL of the record you just created. Different resolvers may cache for varying durations.
70+
71+
This means:
72+
73+
- Lowering the TTL on your new record will not speed up resolution if a negative cache entry already exists; the resolver will only see your new TTL after the old negative entry expires.
74+
- Flushing your local DNS cache only affects your specific device; the upstream recursive resolver (for example, your ISP or a public provider) still holds the negative result.
75+
- Propagation appears uneven because different resolvers may have queried the name at different times, apply different negative cache TTLs, or have no negative cache entry at all.
76+
77+
The exact behavior differs per resolver, but to estimate how long you need to wait, query your zone's SOA record and look at the last value (the `MINIMUM` field). You must wait for that interval to pass since the last `NXDOMAIN` query before the new record will consistently resolve.
78+
79+
You can check if a negative cache entry is active by querying for the non-existent (or newly created) hostname:
80+
81+
```sh
82+
dig +noall +answer +authority mynewrecord.example.com
83+
```
84+
85+
If the record is still negatively cached, the response will include the zone's SOA record in the authority section with a TTL indicating how many seconds remain before the entry expires:
86+
87+
```txt
88+
example.com. 256 IN SOA ...
89+
```
90+
91+
In this example, the negative cache response will continue for 256 more seconds.
92+
93+
To verify the record resolves correctly, you can purge the cache for public resolvers and query the record. If this works, other resolvers will eventually start resolving as well:
94+
95+
- [Purge 1.1.1.1 cache](https://one.one.one.one/purge-cache/)
96+
- [Purge 8.8.8.8 cache](https://dns.google/cache)
97+
- [Query 8.8.8.8](https://dns.google/)
98+
- [Query and refresh OpenDNS cache](https://cachecheck.opendns.com/)
99+
100+
#### Further debugging
101+
102+
To verify the record was correctly created, query Cloudflare's authoritative nameservers directly:
103+
104+
```sh
105+
# Find the authoritative nameservers for your zone
106+
dig @1.1.1.1 example.com NS +short
107+
```
108+
109+
```sh
110+
# Query the authoritative nameserver for your new record
111+
dig @hera.ns.cloudflare.com mynewrecord.example.com A
112+
```
113+
114+
Querying the authoritative nameserver directly bypasses resolver caching. If the record is returned, resolvers will eventually start returning it as well. If the record does not appear, verify the record exists in the Cloudflare dashboard and that the hostname matches exactly.
115+
60116
### Account recovery
61117

62118
If you are locked out of the Cloudflare account that contains your DNS configuration, refer to [Account recovery](/fundamentals/user-profiles/account-recovery/).

src/content/docs/dns/troubleshooting/email-issues.mdx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,41 @@ Also, if `CNAME` records are not returned by the queried nameserver (sometimes n
3535

3636
Cloudflare does not proxy traffic on port 25 (SMTP) unless [Cloudflare Spectrum](/spectrum/reference/configuration-options#smtp) is turned on and configured to proxy email traffic across Cloudflare. If you do not have Spectrum turned on, then no email traffic (SMTP) passes through Cloudflare, and Cloudflare only resolves the DNS. This also means that any DNS record used to send email traffic must be DNS-only to bypass the Cloudflare network. For more information, refer to [Identifying subdomains compatible with Cloudflare's proxy](/dns/proxy-status/).
3737

38+
## Is your mail hostname proxied?
39+
40+
Mail protocols such as SMTP, IMAP, and POP3 do not work through Cloudflare's standard HTTP proxy.
41+
42+
If the hostname used for mail resolves to a Cloudflare IP address, the record is proxied and mail clients will not be able to connect correctly.
43+
44+
Common examples include:
45+
46+
- `mail.example.com` used for SMTP, IMAP, or POP3
47+
- Any hostname targeted by your `MX` record
48+
- Autodiscover or mail service hostnames that must return the provider's actual DNS target
49+
50+
To fix this issue:
51+
52+
1. Go to **DNS** > **Records**.
53+
2. Locate the mail-related hostname.
54+
3. Change the [proxy status](/dns/proxy-status/) to **DNS only**.
55+
56+
Your `MX` record itself is always DNS-only, but the hostname it points to must also resolve to a DNS-only target.
57+
58+
## Common provider record values
59+
60+
If you are not sure whether the DNS content itself is correct, compare it with the values from your provider.
61+
62+
Common examples include:
63+
64+
| Provider | MX records | SPF record |
65+
| --- | --- | --- |
66+
| Google Workspace | `ASPMX.L.GOOGLE.COM` (priority `1`), `ALT1.ASPMX.L.GOOGLE.COM` and `ALT2.ASPMX.L.GOOGLE.COM` (priority `5`), `ALT3.ASPMX.L.GOOGLE.COM` and `ALT4.ASPMX.L.GOOGLE.COM` (priority `10`) | `v=spf1 include:_spf.google.com ~all` |
67+
| Microsoft 365 | `<your-domain>.mail.protection.outlook.com` (priority `0`) | `v=spf1 include:spf.protection.outlook.com -all` |
68+
| iCloud Mail | `mx01.mail.icloud.com` and `mx02.mail.icloud.com` (priority `10`) | `v=spf1 include:icloud.com ~all` |
69+
| Mailgun | `mxa.mailgun.org` and `mxb.mailgun.org` (priority `10`) | `v=spf1 include:mailgun.org ~all` |
70+
71+
Always confirm the exact values with your provider before making changes.
72+
3873
## Contact your mail provider for assistance
3974

4075
If your email does not work shortly after editing DNS records, contact your mail administrator or mail provider for further assistance in troubleshooting so that data about the issue can be provided to Cloudflare support.

src/content/docs/registrar/troubleshooting.mdx

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,14 @@ Domains with certain WHOIS statuses cannot be transferred:
7878
- `redemptionPeriod` — the domain has expired and passed the grace period. You must restore and renew it at your current registrar before it can be transferred.
7979
- `pendingDelete` — the domain is scheduled for deletion by the registry and cannot be transferred or recovered. After deletion, the domain becomes available for anyone to register.
8080

81+
Other common WHOIS or RDAP statuses include:
82+
83+
- `clientTransferProhibited` — the domain is locked at the registrar.
84+
- `serverTransferProhibited` — the registry has applied a transfer restriction.
85+
- `addPeriod` — the domain is within the post-registration lock window.
86+
- `pendingTransfer` — the domain is already in an active transfer.
87+
- `clientDeleteProhibited` or `serverDeleteProhibited` — deletion is restricted.
88+
8189
## WHOIS privacy is blocking the transfer
8290

8391
Most domains can be transferred with WHOIS privacy enabled. However, some registrars may prohibit transfer requests if you have WHOIS privacy services enabled. If your transfer is failing, check with your current registrar to confirm WHOIS privacy is not blocking it.
@@ -111,6 +119,16 @@ Verification is triggered when your registrant contact email differs from your v
111119

112120
Some TLDs — including `.mx`, `.nz`, and `.ca` — may send verification through a third-party service. In these cases, the verification email will come from `noreply@emailverification.info` rather than Cloudflare. Check your spam folder if you do not receive it.
113121

122+
For these TLDs, if verification is not completed in time, the registry may temporarily replace your nameservers with `ns1.emailverification.info` and related hostnames until the registrant email is verified.
123+
124+
## `.uk` transfer uses an IPS tag, not an auth code
125+
126+
`.uk`, `.co.uk`, and `.org.uk` domains do not use the standard auth-code transfer flow.
127+
128+
Instead, the losing registrar changes the domain's IPS tag to the gaining registrar. If you are transferring a `.uk` family domain to Cloudflare and cannot find an auth-code field, this behavior is expected.
129+
130+
If the transfer does not proceed, contact the current registrar and confirm that they have updated the IPS tag correctly.
131+
114132
## Restart your transfer
115133

116134
:::note

src/content/docs/speed/optimization/protocol/troubleshooting/protocol-troubleshooting.mdx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,25 @@ These errors do not necessarily indicate a protocol-level issue. Follow these st
3333
3. If the issue does not persist, analyze netlogs for HTTP/2 or HTTP/3-specific issues.
3434

3535
For more information, refer to [Chromium URL Request Header](https://chromium.googlesource.com/chromium/src/+/HEAD/net/url_request/url_request.h).
36+
37+
## Chrome stalls or fails only on HTTP/3
38+
39+
If the issue reproduces only in Chrome over HTTP/3 and disappears when HTTP/3 is disabled, the problem may be related to a browser-side QUIC handling issue rather than your origin server.
40+
41+
Symptoms can include:
42+
43+
- Large downloads stall unexpectedly.
44+
- Pages with many concurrent requests hang for one to three minutes and then fail.
45+
- Chrome reports `ERR_QUIC_PROTOCOL_ERROR` or another QUIC-related browser error after the connection stops making progress.
46+
47+
### How to isolate the issue
48+
49+
1. Temporarily disable HTTP/3 for the zone.
50+
2. Test the same request again over HTTP/2.
51+
3. If the issue disappears over HTTP/2, capture a NetLog for Chrome and compare the behavior.
52+
53+
### Resolution
54+
55+
If the issue is limited to specific hostnames, you can test a more targeted workaround such as removing the `Alt-Svc` header with a [response header transform rule](/rules/transform/response-header-modification/). However, proxied hostnames can also advertise HTTP/3 through generated HTTPS records. Disabling HTTP/3 for the zone is the most reliable way to force HTTP/2 while you troubleshoot.
56+
57+
After changing `Alt-Svc`, remember that browsers may cache the advertised alternative service for up to 24 hours.

src/content/docs/ssl/origin-configuration/origin-ca/index.mdx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ Refer to [Troubleshooting](/ssl/origin-configuration/origin-ca/troubleshooting/#
3535
Using Cloudflare origin CA certificates does not prevent you from using [delegated DCV](/ssl/edge-certificates/changing-dcv-method/methods/delegated-dcv/).
3636
:::
3737

38+
:::note[Known limitation]
39+
Cloudflare does not currently send expiration notifications for origin CA certificates. If you rely on long-lived origin CA certificates, track their expiration in your own certificate inventory or monitoring system.
40+
:::
41+
3842
---
3943

4044
## Deploy an Origin CA certificate

0 commit comments

Comments
 (0)