Wide landscape photograph of rolling green hills under a soft overcast sky, with a narrow winding road leading toward distant mountains. Muted greens, pale blues, and earthy browns dominate the scene, conveying calm and open space.

Life in New Zealand, Unfiltered

A personal blog by Mardy — leaving Japan, chasing love, and building a life across the ocean.

The difference between a 200 OK blank response and a 404 error

A blank browser window can conceal two entirely different server outcomes. A generic click-through landing page may hide both behind the same anchor. A response labelled 200 OK says the request succeeded, even if the body contains no visible bytes. A 404 response says the server could not find the requested resource. The rendered page may look identical, so the status code—not the apparent blankness—is the decisive evidence.

For Australian teams, the distinction matters whenever a .com.au shop, a Sydney office portal, a Melbourne-hosted service or a Brisbane customer journey is tested from home, mobile broadband and corporate Wi-Fi. Australian shoppers expect quick checkout journeys, reliable stock details and goods and services tax (GST)-inclusive pricing; an empty or missing page can interrupt purchases or support requests. Australia’s domain system also makes redirects, expired registrations and canonical-host changes recurring sources of confusion, with auDA administration and Australian Communications and Media Authority oversight adding local rules.

Troubleshoot the response as an HTTP exchange rather than as an appearance problem. Check the final URL, status line, headers and payload separately, then decide whether the endpoint should return content, no content or a not-found result. That workflow prevents a common mistake: replacing a valid error with a successful-looking empty page merely to silence a warning.

Signal 200 OK with an empty body 404 response
Core meaning The request succeeded, although the body may be empty No current representation exists at the origin
Visible result May be a white page or script-dependent shell May show a custom error page or remain blank
Body Can have zero length or an empty document Can contain an error document or no body
Common cause Empty file, empty handler, proxy or challenge page Wrong path, deleted item or missing application route
Client effect Treated as success, although parsing may fail Treated as a missing resource and may trigger a fallback
Search effect Eligible for crawling, but empty content offers little value Normally excluded from search results after discovery
Corrective signal Return the expected data or use 204 where appropriate Fix the route or retain a genuine 404 response

What the status codes mean

HTTP status codes describe the outcome of a request, not the visual design of its result. In HTTP/1.1, the response begins with a line such as HTTP/1.1 200 OK; HTTP/2 and HTTP/3 convey the same value through the :status pseudo-header. A 200 response can validly be delivered with Content-Length: 0, which explains why monitoring tools report success while the browser displays nothing.

If an endpoint intentionally has no representation, 204 No Content usually communicates that outcome more precisely. It tells the client that no body follows, preventing a JSON parser from waiting for a value. Existing contracts may still require a 200 response containing {} or another valid representation, so status semantics should be checked before changing a public API.

A 404 has a different meaning: the server cannot find a current representation for the target resource. It may include friendly HTML, structured JSON error details or no body at all. A blank page with a 404 status remains a 404 response; visual emptiness does not turn it into a successful fetch.

Why a 200 response can appear blank

An empty 200 commonly starts with a valid request followed by application behaviour that produces no useful output. Examples include an index file containing no bytes, a CMS route returning without output, an API action setting the status to 200 before omitting serialization, or a reverse proxy matching a route but forwarding an empty upstream response. A redirect to a temporary maintenance destination can also finish with an empty successful response.

Browser-side causes can mimic server emptiness. Bot protection, consent screens and JavaScript challenges may return 200, then fail to render because a script was blocked, a Content Security Policy rejected a dependency, an extension altered the page or a service worker cached an incomplete shell. Browser developer tools help separate these cases because the network response may contain HTML even when the viewport remains blank.

Deployment context matters as well. A project work overview may help reviewers identify the intended project during a migration, but it cannot replace the status line at the exact URL being tested. Correlate the empty response with the deployed release, cached object version and upstream log entry before changing code.

Why a 404 appears

A 404 points to routing or resource availability. Common triggers include a mistyped URL, a changed permalink, a deleted CMS item, an incorrect collection or record identifier, a case-sensitive path, a missing trailing slash or a static asset moved without a redirect. Deep links into single-page applications often fail when the server has no fallback for client-side routes.

Not every blank screen originates at the origin server. Corporate filtering, antivirus gateways and managed security products can insert a robot check before traffic continues. A corporate robot page issue explains why one managed network may present an interstitial for every destination, making a genuine 404 appear to be an unrelated network error. Compare results outside the managed network, inspect proxy headers and ask IT whether safe browsing rewrites responses.

How to inspect the actual exchange

Start with a GET request because HEAD can be handled differently from an actual page fetch. Set TEST_URL to the exact address and run curl -sS -D - -o /dev/null "$TEST_URL" to print the response headers while discarding the body. Remove the final option when the payload itself needs examination. Add -L when testing a redirect chain and record every hop; otherwise the final status can conceal a 301, 302 or 307 pointing at the wrong destination.

In browser developer tools, open the Network panel, disable the cache, reload the page and select the document request. Read the status, final request URL, content type and response size. A 200 with zero bytes, a 200 containing a non-HTML challenge and a 404 containing a custom body are separate cases. Preserve a HAR file or copy the relevant headers for support, but redact cookies, authorisation values and personal information before sharing.

If the landing page uses a redirect or an obfuscated URL parameter, test both the landing page and its resolved destination because each can return a different status. Then reproduce the request with fresh DNS and, where relevant, from different Australian networks. A stale DNS answer may point to a former CDN edge or parked domain, while a cached negative response may continue after deployment. Purge the affected URL at the edge and use a unique query parameter only as a diagnostic, since publishing it can create duplicate URLs.

What clients and search engines infer

Search engines evaluate status and rendered content together. A genuine 404 normally signals that the URL should not remain indexed, whereas a 200 makes a page eligible for discovery and may expose an empty shell to a crawler. Some 200 pages containing “not found” wording are treated as soft 404s, but an empty response does not automatically become one. Sitemaps should contain canonical, useful URLs rather than relying on a noindex directive to repair broken status handling.

API and application clients often react differently again. An SDK may accept any 2xx status and then fail while decoding JSON from an empty 200 response. A 404 may instead trigger a retry, an alternate endpoint or a user-facing missing-resource message. Document the exact contract: 200 with a representation, 204 for no body, 404 for an absent resource and 410 for a deliberately retired resource. A site overview can help reviewers confirm the intended domain, but status and schema tests should still run against the exact endpoint.

Hosting and delivery realities in Australia

Australian delivery paths provide useful diagnostic signals. Traffic may cross a global CDN, Sydney or Melbourne peering points, an NBN connection, a 4G or 5G mobile network and an employer firewall. Different routes can expose inconsistent TLS termination, compression, cache keys or IPv6 behaviour. Time to first byte does not establish resource existence: a slow 200 is still successful, while a fast 404 is still missing. Measure status, latency and body separately.

Local hosting choices also influence failures. Australian retailers and online marketplaces often serve campaigns through global platforms with region-specific domains and CDN rules. A migration from a .com.au hostname to an .au domain can leave canonical tags, internal links or cached objects pointing at the former host. The holding page differences guide is helpful for separating intentional placeholders from accidental missing content; a deliberate holding page may return 200, while a nonexistent route should not.

Audience-facing errors should remain appropriate for the local market. A custom 404 should offer search, support and category links in Australian English without suggesting stock, prices or delivery promises for another country’s catalogue. GST-inclusive pricing is expected in Australian retail, but an error page does not need to become a checkout page. If an error form collects personal information, make sure Australian Privacy Act notices and consent remain clear.

Verify the cause and apply the right fix

For an endpoint that should return data, correct the root cause and make the body match the documented contract. If it should return no content, choose 204 where clients support it, or provide a valid representation such as {} when 200 forms part of an existing API. Do not change the status merely to make logs green. Coordinate SDK, CDN and monitoring rules, then add automated tests that assert both the status code and the expected response schema.

For genuinely absent resources, restore the route or content where appropriate. Keep 404 for an unknown or removed item, and return a branded but concise error page with the correct status. If removal is permanent and clients need to know the resource will not return, 410 Gone can be more expressive. Update internal links, sitemaps, canonical URLs and redirect maps. Do not redirect every missing page to the homepage, because that creates soft 404s and hides broken customer journeys.

Make the next check reproducible: capture a GET response from an Australian residential connection and a managed office network, record the final status and headers, and compare them with the expected route. If the result is an empty 200, trace the application and proxy output before choosing between a real representation and 204. If it is a 404, correct the route and verify the custom error. Share the sanitised evidence with hosting, engineering and SEO owners, then retest the same URL before sign-off.