この 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 / Express | res.status(505).end() |
|---|---|
| Python / Flask | return '', 505 |
| nginx | return 505; |
確認方法
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/