HTTPステータスコードとは、特定の要求のステータスを表す3桁の数字です。リクエストが成功したか、リダイレクトされたか、またはエラーが発生したかを識別するのに有用です。ウェブサイトを運用していれば、今回ご紹介する416のようなエラーコードに度々遭遇することになります。

400番台のステータスコードは、通常、完了できなかった不正リクエストを示します。とは言え、HTTP 416エラーに遭遇してもご心配なく。このエラーには解決策があります。

今回は、HTTPステータスコード416の概要と主な原因についてご説明し、このエラーをトラブルシューティングして解決する方法を見ていきます。

HTTP 416エラーの解決方法について動画での解説もご用意しています。

HTTP 416エラーとは

HTTP(Hypertext Transfer Protocol)ステータスコード416は、「Range Not Satisfiable(範囲を満たせない)」としても知られています。簡単に言えば、送信したリクエストに応えることができないことを意味し、要求の一部にサーバーで返すことができないリソースが含まれています。

通常、要求された特定のリソースがサーバー上に存在しないために発生します。例えば、存在しないページにアクセスしようとすると、この416エラーが発生します。

HTTP 416エラーの主な原因

このエラーの原因はいくつかあります。まずは、先に触れた要求している特定のリソースがサーバー上に存在しない場合。あるいは、サーバーが一時的にダウンしているか、利用できない状態になっていることも考えられます。

典型的な例として、ドキュメントやページが指定されたリクエスト範囲を含んでいないことがあります。もしくは、Rangeヘッダーの値(サーバーが返すべき部分)が構文的には正しくても、意味をなしていないことも。

例えば、1,000バイトの画像があるとします。もしサーバーが誤った値「1,500」を指定した場合、ブラウザはサーバーから1,500バイトの要求を送信することになります。画像は1,000バイトしかないことから、サーバーが416エラーを返すことがあります。

また、サーバーが特定の種類のリソースのみを返すように設定されていることもあります。この場合は、アクセスしようとしているリソースが、サーバーでサポートされている種類のリソースではないことを意味します。

また別の原因として、短時間にあまりにも多くのリクエストを送っている場合もエラーを引き起こす可能性があります。この場合は、インターネットプロトコル(IP)アドレスが一時的にブロックされているかもしれません。

HTTP 416エラーの原因特定

HTTP 416エラーに遭遇したら、どの範囲が問題になっているのかを特定しましょう。このエラーメッセージには通常、それを示すContent-Rangeというものが含まれています。

以下のような形で、アスタリスク記号(*)とフォワード・スラッシュ(/)が表示され、リソースの現在の長さが含まれています。

Content-Range: bytes */12777</code.

HTTP 416エラーを解決するには(4つの方法)

HTTPステータスコード416の概要と原因を押さえたところで、本題の解決方法を見ていきましょう。全部で4種類の方法をご紹介します。

1. ブラウザキャッシュをクリアしてURLを見直す

HTTP 416エラーのトラブルシューティングとして、まず最初に行うべきことは、ブラウザキャッシュをクリアすること。この手順は、お使いのブラウザによって異なります。

Google Chromeの場合は、画面右上の縦三点リーダーをクリックし、「その他のツール」>「閲覧履歴を消去」を選択します。

Google Chromeでブラウザキャッシュをクリア
Google Chromeでブラウザキャッシュをクリア

キャッシュされた画像とファイル」を選択し、「データを削除」をクリックします。

「キャッシュされた画像とファイル」を選択
「キャッシュされた画像とファイル」を選択

キャッシュをクリアしたら、ブラウザを再読み込みします。その後、ページに再度アクセスし、エラーが解消されているかどうかを確認してください。また、URLに余分なスペースや誤字がないかどうかも見直してください。

2. Apacheのエラーログを確認する

次の解決策は、エラーログの確認です。Apacheサーバーを使用している場合、SSH(Secure Shell)を使って、以下のコマンドを実行してください。

sudo tail -100 /etc/httpd/logs/access_log

エラーログを開いたら、「416」を検索し、どのページでこのステータスコードが表示されたかを絞り込むことができます。特定できたら、そこからさらにトラブルシューティングを進めていきましょう。

3. アプリケーションパフォーマンス監視(APM)ツールを使用する

APMツールは、エラーの発生場所を特定し、トラブルシューティングを行うのに役立ちます。APMツールでアプリケーションやサイトのパフォーマンスを監視することで、問題発生時に詳細情報と分析を確認することができます。

例えば、Kinstaのホスティングプランでは、NginxとKinsta APMを提供しています。

KinstaのAPMツール
KinstaのAPMツール

DevKinstaと並び、この無料APMツールは、MyKinstaから直接利用することができます。パフォーマンスの問題を診断し、原因を即座に特定可能です。

4. Rangeリクエストを無効にする

この時点で、まだHTTP 416エラーが解決しない場合は、Rangeリクエストを無効化することがベストな解決策です。これによって、ブラウザがRangeヘッダーでファイルからbyte範囲を要求できないことを認識します。

Rangeリクエストを無効化するには、以下のコードを.htaccessファイルの先頭に貼り付けてください。

Header set Accept-Ranges none Request

Header unset Range

貼り付けたら、ファイルを保存します。それからブラウザを再読み込みしてページにアクセスし、HTTP 416エラーが消えているかどうかを確認します。それでも解決しない場合は、ご利用のサーバーに問い合わせてみてください。

まとめ

ウェブサイトにアクセスしようとしたら、エラーメッセージが…なんていう状況は避けたいものです。HTTPステータスコードの1つに416があります。このエラーは通常、要求を満たすことができないことを意味し、その原因はさまざまです。

上記でご紹介した通り、HTTP 416 エラーの解決策は以下の4つ。

  1. ブラウザキャッシュをクリアしてURLを見直す
  2. エラーログを確認する
  3. アプリケーションパフォーマンス監視(APM)ツールを使用する
  4. .htaccessファイルでRangeリクエストを無効にする

エラーの検出と解決を簡単に行えるAPMツールを提供してくれるような、優れたホスティングサービスをお探しですか?Kinstaのホスティングプランをぜひご検討ください。