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の場合は、画面右上の縦三点リーダーをクリックし、「その他のツール」>「閲覧履歴を消去」を選択します。
「キャッシュされた画像とファイル」を選択し、「データを削除」をクリックします。
キャッシュをクリアしたら、ブラウザを再読み込みします。その後、ページに再度アクセスし、エラーが解消されているかどうかを確認してください。また、URLに余分なスペースや誤字がないかどうかも見直してください。
2. Apacheのエラーログを確認する
次の解決策は、エラーログの確認です。Apacheサーバーを使用している場合、SSH(Secure Shell)を使って、以下のコマンドを実行してください。
sudo tail -100 /etc/httpd/logs/access_log
エラーログを開いたら、「416」を検索し、どのページでこのステータスコードが表示されたかを絞り込むことができます。特定できたら、そこからさらにトラブルシューティングを進めていきましょう。
3. アプリケーションパフォーマンス監視(APM)ツールを使用する
APMツールは、エラーの発生場所を特定し、トラブルシューティングを行うのに役立ちます。APMツールでアプリケーションやサイトのパフォーマンスを監視することで、問題発生時に詳細情報と分析を確認することができます。
例えば、Kinstaのホスティングプランでは、Nginxと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つ。
- ブラウザキャッシュをクリアしてURLを見直す
- エラーログを確認する
- アプリケーションパフォーマンス監視(APM)ツールを使用する
- .htaccessファイルでRangeリクエストを無効にする
エラーの検出と解決を簡単に行えるAPMツールを提供してくれるような、優れたホスティングサービスをお探しですか?Kinstaのホスティングプランをぜひご検討ください。