What HTTP status codes are
Every web answer starts with a status code. Codes in the 5xx range mean a server problem.
HTTP Error 505: HTTP Version Not Supported means the server refuses to work with the version of HTTP in the request (for example HTTP/2 or HTTP/3 when only HTTP/1.1 works).
Causes
- Unsupported protocol version. The client uses a version that the server does not know.
- Server configuration. The server is set up to accept only certain versions, or a setting is wrong.
- Client and server mismatch. An old client with a new server, or the other way round.
- No version negotiation. The two sides cannot agree on a version.
- A proxy or gateway in the middle that changes the request.
How to fix it
1. Check the HTTP version. See which version the request uses.
curl -v --http1.1 https://example.com
Try other versions, --http2 or --http1.0, to see which one the server accepts.
2. Review the server configuration. Check your web server settings. In Nginx, the listen directive may need http2. In Apache, check the Protocols directive, for example Protocols h2 http/1.1.
3. Update server software. Install the latest version of your web server, OpenSSL and the modules for HTTP/2.
4. Make the client and server match. Update the client or the library that sends the requests, or set it to use HTTP/1.1.
5. Test after each change. Check the result in a browser and with curl. Read the error log.
6. Allow version negotiation. Use HTTPS with ALPN so that the browser and the server pick a version that both support.
7. Check proxies and gateways. Test the site without them, or compare their configuration with that of the server.
8. Read the documentation of your web server and framework.
9. Ask for help. If you cannot find the cause, send the details to Hostvento support.
Quick recap
- 505 means the HTTP version is not supported.
- Test with
curl --http1.1and--http2. - Align the server and client versions, and check any proxy.