HTTP 505 HTTP Version Not Supported — What It Means and How to Fix It
The HTTP 505 (HTTP Version Not Supported) status code indicates that the server does not support the HTTP protocol version used in the request message. The server is unwilling to complete the request using that version, often because it cannot or will not support the major version number specified.
Essential Reading: Designing Data-Intensive Applications
The system design bible for software engineers. Learn to build reliable, scalable, and maintainable systems.
Common Causes
- Client sending an outdated or non-standard HTTP version (e.g., HTTP/0.9, HTTP/3.0 before widespread adoption).
- Misconfigured proxy server or load balancer forwarding requests with an unsupported HTTP version.
- Server intentionally configured to only accept specific, newer HTTP versions (e.g., only HTTP/2 or HTTP/3, rejecting HTTP/1.1).
- Client-side software bug or misconfiguration sending an invalid HTTP version string.
Code Examples to Handle HTTP 505
curl -I https://httpbin.org/status/505
How to Fix It
- **Client-side:** Verify the HTTP version being used by the client application or browser. Ensure it's using a standard and widely supported version like HTTP/1.1, HTTP/2, or HTTP/3.
- **Server-side:** Check the server's configuration (e.g., Apache, Nginx, Node.js server) to ensure it's configured to support the HTTP versions you expect clients to use. Update or reconfigure if necessary.
- **Proxy/Load Balancer:** If a proxy or load balancer is in front of the server, inspect its configuration. It might be downgrading or forwarding requests with an unsupported HTTP version to the backend server.
Related Status Codes
Frequently Asked Questions
What causes HTTP 505?
HTTP 505 is primarily caused by a mismatch between the HTTP protocol version requested by the client and the versions supported by the server. This can stem from outdated client software, server misconfiguration, or issues with intermediary proxies.
How do I fix HTTP 505?
To fix HTTP 505, you should first identify the HTTP version being used by the client. Then, either update the client to use a supported version (e.g., HTTP/1.1, HTTP/2) or reconfigure the server to accept the version the client is sending. Also, check any proxies or load balancers in the request path.