Debugging Network Issues: DNS, SSL, and Headers
When a site or API misbehaves, the problem is often in the plumbing. A practical walkthrough of DNS lookups, certificate checks, and response header inspection.
"The site is down" is usually a lie - the site is fine, and something between you and it is not. Before you blame the application, check the three layers underneath: DNS resolution, the TLS certificate, and the response headers. Each has its own failure signature, and each can be checked in seconds without leaving the browser.
Layer 1: DNS - does the name resolve to what you expect?
DNS problems look like "it works on my machine" - because your resolver or hosts file differs from the user's. When a domain behaves differently for different people, start by querying the actual records with the DNS Lookup tool. Check the A and AAAA records against the IP your provider says the site should be on, and look at MX and TXT records when email or verification is the complaint.
Common findings: a stale A record pointing at an old server after a
migration, missing CNAME for www, or a TXT record that never
got added - which is why a domain's email keeps failing SPF checks. DNS
changes also propagate slowly, so when a record looks wrong, note whether
it is simply old rather than broken.
Layer 2: SSL - is the certificate valid, and for the right names?
Certificate errors usually mean one of three things: the certificate expired, it does not cover the hostname being requested, or something in the middle is intercepting traffic. The SSL Checker pulls the certificate from public Certificate Transparency logs and shows the issuer, validity window, and the subject alternative names it actually covers.
The classic gotcha: a certificate valid for example.com but
not www.example.com, or vice versa. The SAN list is the
ground truth - if the hostname is not in it, browsers will show a warning
no matter how valid the dates are. And if the checker finds no certificate
at all for a domain that should have one, that is usually a proxy or
load-balancer misconfiguration rather than a missing purchase.
Layer 3: Headers - what is the server actually saying?
When the connection works but the behaviour is wrong, read the response headers. The HTTP Header Checker fetches a URL and shows exactly what the server sent, which answers a surprising number of "why is this broken" questions:
- Is a redirect chain bouncing the request somewhere unexpected? Check
locationand how many hops happened. - Is caching serving stale content? Look at
cache-controlandetag. - Is a CDN or WAF blocking the request? Missing expected headers, or odd
servervalues, are the tell. - Are security headers missing? That is a compliance issue for production, not a bug - but worth knowing about.
Layer 4: CORS - the one that only appears in the browser
CORS failures are the strangest to debug because curl cannot
reproduce them - the browser enforces the policy, not the server. The
CORS Tester sends a request with a
chosen Origin header and reports which
access-control-* headers actually came back. If
access-control-allow-origin does not match your origin, the
fix belongs in the API configuration, not in the frontend.
Putting it together
Next time something "does not work", walk the layers in order: resolve the name, check the certificate, read the headers, test the CORS policy. Nine times out of ten the answer is in one of those four places - and you will have the evidence ready when the report needs to go upstream.