【505エラー完全攻略】原因・解決策・代替手段まで徹底解説

2024-07-01

HTTP ステータスコード "505 HTTP Version Not Supported (RFC 9110)" は、サーバーがクライアントがリクエストした HTTP プロトコルのバージョンをサポートしていないことを示します。これは、クライアントが古いバージョンの HTTP を使用しているか、サーバーが新しいバージョンの HTTP をサポートしていないかのどちらかです。

このエラーが発生する主な原因は以下の 2 つです。

  • クライアントが古いバージョンの HTTP を使用している: 多くの場合、古いブラウザやソフトウェアは、最新の HTTP プロトコルで導入された新しい機能をサポートしていない古いバージョンの HTTP を使用します。サーバーがこれらの古いバージョンをサポートしていない場合、このエラーが発生します。
  • サーバーが新しいバージョンの HTTP をサポートしていない: 古いサーバーソフトウェアは、最新の HTTP プロトコルの更新に対応していない場合があります。クライアントが最新の HTTP バージョンを使用してリクエストを送信した場合、サーバーはこのエラーを返します。

このエラーを解決するにはどうすればよいですか?

このエラーを解決するには、以下のいずれかの方法を試すことができます。

  • クライアント側で:
    • ブラウザやソフトウェアを最新バージョンに更新する。最新のバージョンは、最新の HTTP プロトコルをサポートしている可能性が高いです。
    • 古いバージョンの HTTP をサポートしている必要がある場合は、互換性のある代替クライアントを使用する。
  • サーバー側で:
    • サーバーソフトウェアを最新バージョンに更新する。最新のバージョンは、最新の HTTP プロトコルをサポートしている可能性が高いです。
    • 古いバージョンの HTTP をサポートする必要がある場合は、サーバー設定でサポートを有効にする。


    HTTP/1.1 505 HTTP Version Not Supported
    Content-Type: text/html
    Connection: close
    
    <html>
    <head>
    <title>505 HTTP Version Not Supported</title>
    </head>
    <body>
    <h1>505 HTTP Version Not Supported</h1>
    <p>The server does not support the HTTP version specified in the request.</p>
    </body>
    </html>
    

    この応答には、以下のヘッダーが含まれます。

    • HTTP/1.1: 使用されている HTTP プロトコルのバージョン
    • 505 HTTP Version Not Supported: エラーコードと説明
    • Content-Type: レスポンスのコンテンツタイプ
    • Connection: close: コネクションが閉じられることを示します

    この応答には、HTML ボディも含まれています。このボディには、エラーの説明が表示されます。

    以下の例は、サーバー設定で古いバージョンの HTTP をサポートするように構成されている場合に、サーバーが返す可能性のある応答を示しています。

    HTTP/1.0 200 OK
    Content-Type: text/html
    Connection: close
    
    <html>
    <head>
    <title>Document</title>
    </head>
    <body>
    <h1>This is a page</h1>
    </body>
    </html>
    
    • HTTP/1.0: 使用されている HTTP プロトコルのバージョン
    • 200 OK: リクエストが成功したことを示します
    • Content-Type: レスポンスのコンテンツタイプ
    • Connection: close: コネクションが閉じられることを示します


    HTTP ステータスコード "505 HTTP Version Not Supported (RFC 9110)" の代替手段

    このエラーを回避するには、以下の代替手段を検討することができます。

    クライアント側での対策

    • ブラウザやソフトウェアを最新バージョンに更新する: 最新バージョンは、最新の HTTP プロトコルをサポートしている可能性が高いです。
    • 互換性のある代替クライアントを使用する: 古いバージョンの HTTP をサポートする必要がある場合は、互換性のある代替クライアントを使用します。

    サーバー側での対策

    • サーバーソフトウェアを最新バージョンに更新する: 最新バージョンは、最新の HTTP プロトコルをサポートしている可能性が高いです。
    • 古いバージョンの HTTP をサポートするようにサーバーを構成する: 古いバージョンの HTTP をサポートする必要がある場合は、サーバー設定でサポートを有効にします。
    • HTTP/1.1 以前の古いバージョンへのリクエストを別の新しいバージョンにリダイレクトする: リダイレクトを使用して、古いバージョンの HTTP クライアントを新しいバージョンに誘導することができます。ただし、古いクライアントがリダイレクトを認識できない可能性があることに注意する必要があります。
    • 古いバージョンの HTTP クライアント用の代替 API やエンドポイントを提供する: 古いバージョンの HTTP クライアント専用の API やエンドポイントを提供することで、互換性を保ちながら新しい機能を提供することができます。
    • エラーページをカスタマイズする: エラーページをカスタマイズして、ユーザーが何が起こっているのかをよりよく理解できるようにすることができます。 わかりやすい説明と、問題を解決するための手順を含めるようにしてください。
    • 詳細なログを記録する: エラーの詳細なログを記録することで、問題の根本原因を特定しやすくなります。