Error map
Headers already sent Warning: Cannot modify header information - headers already sent
PHP · layer 4, Application & API
Centre: this error. First ring: errors it is linked with (12). Outer ring: what those are linked with. Colours show the layer of a request each error belongs to. Click any dot to re-centre the map on it; hover to follow its connections. The centre dot opens the error page.
Directly related (12)
HTTP 500 Internal Server Error
The server hit an unexpected condition — usually an unhandled exception or misconfiguration in the application.
Warning: Undefined array key / Undefined index
Your code reads an array key that doesn’t exist — common with `$_GET`, `$_POST` and decoded JSON.
PHP Fatal error: Uncaught Error: Call to undefined function
PHP can’t find the function you called — usually a missing extension, missing include, or namespace issue.
Warning: session_start(): Session cannot be started after headers have already been sent
session_start() ran after output was sent, so PHP can’t set the session cookie.
WordPress: Updating failed. The response is not a valid JSON response.
The block editor saved via the REST API but got HTML or an error page back — broken permalinks, a security plugin/WAF, or PHP out…
Unexpected characters at the top of the page / headers already sent by BOM
A UTF-8 byte-order mark (BOM) at the start of a PHP file is sent as output, breaking headers, JSON and images.
HTTP 100 Continue
An interim response telling the client to go ahead and send the request body — normal when the client sent Expect: 100-continue.
Cloudflare Error 1040 / 1041: Invalid request header modification
A Transform Rule tried to set or remove a request header that Cloudflare doesn’t allow to be modified, or produced an invalid val…
Refused to load the script because it violates the following Content Security Policy directive
The page’s Content-Security-Policy doesn’t allow that script, style, image or connection source.
HTTP 103 Early Hints
An interim response that sends Link headers early so the browser can preload CSS, fonts or scripts while the server is still buil…
WordPress login: Error: Cookies are blocked or not supported by your browser. You must enable cookies to use WordPress.
WordPress’s test cookie wasn’t returned on login — often a siteurl/home or domain mismatch, caching of wp-login.php, or headers a…
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
An Express/Node handler tried to send a second response (or set headers) after one was already sent.
Two steps away (36)
HTTP 404 Not Found
The server can’t find anything at the requested URL.
HTTP 502 Bad Gateway
A proxy or gateway (Nginx, load balancer, CDN) got an invalid response — or no response — from the upstream server behind it.
HTTP 503 Service Unavailable
The server is temporarily unable to handle the request — overloaded, in maintenance, or has no healthy backends.
TypeError: Cannot read properties of undefined (reading 'x')
You tried to access a property on a value that is `undefined` (or `null`) — usually data that hasn’t loaded yet or a wrong proper…
KeyError: 'x'
You accessed a dictionary key that doesn’t exist.
java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
Code accessed an array index outside 0 … length-1.
PHP Fatal error: Uncaught Error: Class "X" not found
PHP couldn’t load the class — autoloading failed, the namespace is wrong, or the dependency isn’t installed.
WordPress: There Has Been a Critical Error on This Website
A PHP fatal error (usually from a plugin or theme) stopped WordPress; the real error is in the debug log or recovery-mode email.
Fatal error: Cannot redeclare function foo() (previously declared in …)
The same function (or class) was defined twice — usually a file included more than once.
AWS: ExpiredToken — The security token included in the request is expired
Temporary AWS credentials (STS/SSO/assumed role) have expired.
HTTP 401 Unauthorized
The request has no valid authentication credentials — you need to log in or send a valid token.
CORS Error: No 'Access-Control-Allow-Origin' header is present
The browser blocked a cross-origin request because the server’s response didn’t include the CORS headers allowing your site’s ori…
HTTP 403 Forbidden
The server understood the request but refuses to authorize it — you (or the server process) are not allowed to access this resour…
SyntaxError: Unexpected token < in JSON at position 0
`JSON.parse()` / `response.json()` received something that isn’t JSON — very often an HTML error page.
WordPress: Are you sure you want to do this? Please try again. (nonce check failed)
A WordPress security nonce didn’t validate — the page was open too long, cached, or a plugin/theme form is broken.
HTTP 411 Length Required
The server refuses a request with a body but no Content-Length header.
HTTP 428 Precondition Required
The server requires a conditional request (If-Match / If-Unmodified-Since) to prevent lost updates, and you didn’t send one.
URIError: URI malformed
decodeURIComponent/decodeURI received an invalid percent-encoded sequence.
HTTP 413 Content Too Large (Request Entity Too Large)
The request body is bigger than the server is willing to accept — usually a file upload over the configured limit.
HTTP 505 HTTP Version Not Supported
The server doesn’t support the HTTP protocol version used in the request.
WordPress: The link you followed has expired
Usually an upload (theme, plugin, media) larger than PHP’s upload/post limits — WordPress receives an empty request and shows thi…
HTTP 416 Range Not Satisfiable
The client asked for a byte range (Range: bytes=…) that lies outside the file — usually a resumed download of a file that changed…
HTTP 417 Expectation Failed
The server or a proxy can’t meet the Expect header in the request — almost always Expect: 100-continue.
Cloudflare Error 1035 / 1036: Invalid request rewrite (invalid URI path / query string)
A Transform Rule (URL rewrite) produced an invalid path or query string.
Mixed Content: The page was loaded over HTTPS, but requested an insecure resource
An HTTPS page tried to load a script, API or image over plain HTTP, and the browser blocked (or warned about) it.
SecurityError: Blocked a frame with origin "x" from accessing a cross-origin frame.
Script tried to read or modify an iframe (or window) from another origin.
Script error. (at line 0) — cross-origin error details hidden
An error happened in a script from another origin, and the browser hid the details.
HTTP 504 Gateway Timeout
A proxy or gateway waited too long for the upstream server to respond and gave up.
Cloudflare Error 524: A Timeout Occurred
Cloudflare connected to the origin, but the origin didn’t send an HTTP response within 100 seconds.
HTTP 304 Not Modified
The cached copy is still valid, so the server sends no body and the client reuses its cache.
HTTP 431 Request Header Fields Too Large
The request headers — almost always cookies — exceed the server’s size limit.
WordPress: ERR_TOO_MANY_REDIRECTS / redirected you too many times on wp-admin or the whole site
WordPress and the server/proxy keep redirecting to each other — usually siteurl/home mismatch (http vs https, www vs non-www) or…
WordPress: 404 Not Found on every page except the homepage (permalinks / .htaccess / Nginx rules)
Pretty permalinks aren’t being routed to index.php — .htaccess is missing/ignored (Apache) or Nginx lacks try_files.
Error: Cannot find module 'x' (MODULE_NOT_FOUND)
Node can’t resolve the module path — the package isn’t installed, or a relative path/extension is wrong.
SyntaxError: Cannot use import statement outside a module
An `import` statement ran in a context treated as CommonJS (Node without "type": "module", a browser script without type="module"…
DeprecationWarning: Buffer() is deprecated due to security and usability issues (DEP0005)
Code (yours or a dependency) uses the deprecated new Buffer() constructor.
Map another error
Popular: 4035004000xC000007BTypeErrorCritical error404NullPointerException