505 HTTP Version Not Supported

この HTTP バージョンはサポートされていません。

使いどころ

まれ。非常に古いか非常に新しいプロトコルバージョン。

よくある原因と対処法

実際にはごくまれで、サーバーがリクエスト行の HTTP バージョンを拒否しています。原因としては、HTTP/1.2 のようなタイプミスのある手書きのリクエスト、HTTP/1.x しか理解しないサーバーに HTTP/2 で話しかけるクライアント、あるいはその逆などがあります。AWS ALB は、まさにそのような不一致、たとえば HTTP/1 として確立した接続に HTTP/2 のリクエストが届いた場合に 505 を返すと明記しています。

curl --http1.1 や curl --http2 でバージョンを強制し、サーバーがどちらを受け付けるかを確かめてデバッグします。ALPN のネゴシエーションは openssl s_client -alpn h2 -connect host:443 で確認できます。ブラウザーは ALPN と Alt-Svc を通じて HTTP/2 や HTTP/3 をネゴシエートするため、ブラウザー自身が 505 を引き起こすことはまずありません。レスポンスには、サーバーがサポートしているバージョンを記載すべきです。

サーバーエラー (5xx)

5xx はサーバーエラーです。リクエストに問題がなくても、サーバーやその背後の何かが失敗しています。アラートを設定しておく価値があります。

レスポンスでの表示

HTTP/1.1 505 HTTP Version Not Supported

返し方

Node.js / Expressres.status(505).end()
Python / Flaskreturn '', 505
nginxreturn 505;

確認方法

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP ステータスコードを開く