何が起きたのか?
505 は「あなたが使っている HTTP のバージョンには、このサーバーは対応していません」というサインです。 教室で言えば、もう使われなくなった旧版の教科書を持ってきた生徒に、先生が「ごめん、それは去年までのもので、今年の授業はこっちの版でやっているんだ」と返している——そんな状況に近いです。
426 (Upgrade Required) と似ていますが、向きが違います。426 は「同じ通信先で別プロトコルに切り替えてほしい」、505 は「そもそもそのバージョン自体に対応がない」と告げています。多くの場合、クライアント側のライブラリやランタイム更新で解決します。
黒板からのひとこと
学校では、教科書が改訂されると古い版は使わなくなります。先生が冷たいわけではなく、授業の前提が新しい版で組み立てられているからです。生徒が新しい教科書に持ち替えれば、すぐに同じ授業に戻れます。
505 もそれと同じで、サーバーは「最新版の通信規格で来てくれれば応えますよ」と言っています。古い HTTP クライアントを使い続けている運用がないか、見直すきっかけにもなります。
解決への歩み
大丈夫、次はこうしてみよう:
- HTTP クライアントを更新:ライブラリ・ランタイムを最新版に
- 明示的にバージョンを指定:HTTP/1.1 や HTTP/2 を意図して使う設定
- プロキシのバージョン挙動を確認:中継で予期せぬダウングレードが起きていないか
- 対応バージョンの公開(管理者向け):エラー応答や API ドキュメントで対応 HTTP バージョンを明記
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 505 HTTP Version Not Supported
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>505 HTTP Version Not Supported</h1></body></html>