ウェブサイトの閲覧は、HTTPリクエストを送信し、サーバーが目的のリソースをブラウザに返すことで初めて可能になります。しかし、このリクエストを送信する過程で、何かしらも問題が生じると、今回ご紹介するHTTPステータスコード「411 Length Required」が表示されます。

「HTTP 411 Length Required」エラーは、サーバーがcontent-lengthヘッダーを要求しているにもかかわらず、リクエストでそれが指定されていない場合に起こります。したがって、解決方法は至ってシンプル。content-lengthヘッダーを設定すればいいのです。

「HTTP 411 Length Required」エラーの解決方法について、動画での解説もご用意しています

今回は、「HTTP 411 Length Required」エラーの原因と見つけ方、そして解決策を順にご紹介します。

「HTTP 411 Length Required」エラーとは

ユーザーがリンクをクリックしたり、URLを検索したりすると、その都度ブラウザからウェブサイトのサーバーにリクエストが送信されます。その後、サーバーはリクエストを処理し、要求されたデータを送信することで応答します。

通常目にすることはありませんが、サーバーは、要求されたデータと併せてHTTPヘッダーでステータスコードも送信します。リクエスト中に何か問題が発生すると、ブラウザ上にHTTPステータスコードが表示されます。

例えば、一般的なHTTPステータスコードに「400 Bad Request」があります。これは、一般的なクライアント側のエラーで、URLに誤りがあると発生します。

「400 Bad Request」エラー
「400 Bad Request」エラー

HTTPステータスコードは、以下の5つに分類されています。

HTTPステータスコードについて分かったところで、次は「411 Length Required」の原因について見ていきましょう。このエラーは、あまり一般的ではないため、遭遇すると困惑してしまう方も多いでしょう。

「411 Length Required」エラーは、content-lengthヘッダーがないためにリクエストが拒否されたことを意味します。サーバーがcontent-lengthヘッダーを要求している場合は、この情報なしにサイトにアクセスすることはできません。

「HTTP 411 Length Required」エラーの原因

クライアントとサーバーは、HTTPリクエストとレスポンスにHTTPヘッダーを設定することができます。「411 Length Required」のエラーコードは、クライアントエラーを示しており、リクエストヘッダーに問題があるということになります。

リクエストヘッダーを使用して、リクエストに関するコンテキストを設定し、サーバーがそのレスポンスを調整できるようにします。リクエストヘッダーには、以下のような情報を含めることができます。

  • 送信元IPアドレスとポート番号
  • コンテンツタイプ
  • ブラウザの種類(ユーザーエージェント)
  • リクエストされたURL

また、HTTPヘッダーは、entity-bodyのサイズも定義することができます。content-lengthの値を指定(10進数のオクテット数で識別)することで、サーバーに想定されるリクエストのサイズを伝えます。

例えば、ウェブページのデータの長さ(content-length)を確認するには、要素を右クリックし「検証」を選択します。「Network」の下に、レスポンスヘッダーに関する情報が表示されます。

Inspectツール
Inspectツール

通常、ほとんどのHTTPリクエストには、リクエストボディとcontent-lengthヘッダーの両方があります。しかしクライアントによっては、content-lengthを定義しないことも可能で、これはチャンク形式の転送エンコードに有用です。

「411 Length Required」のHTTPステータスコードを受け取った場合、サーバーがcontent-lengthヘッダーを要求していることを意味するため、リクエストの続行には、この値の定義が必要になる可能性があります。

「HTTP 411 Length Required」エラーの見つけ方

先にも触れた通り、「HTTP 411 Length Required」エラーは、クライアントエラーであるため、自分のサイトでこのエラーが発生しているかどうかがわからないことがあります。これを確かめるには、サイトのHTTPリクエストを監視します。

Kinstaアカウントをお持ちの場合は、MyKinstaでサイトのログをチェックし、直接HTTPリクエストの失敗を確認することができます。

まずは、MyKinstaにログインし、「サイト」に移動して、対象のウェブサイトを選択します。なお、リクエストの確認は稼働しているサイトでのみ可能なため、ローカル環境は選択しないようにしてください。

MyKinstaでサイトを選択
MyKinstaでサイトを選択

すると、基本情報が確認できる「情報」画面がページが表示されます。左側メニューから「ログ」をクリックしてください。

「ログ」画面に移動
「ログ」画面に移動

ログビューア」に、サイトのエラーログが表示されます。ドロップダウンメニューから「access.log」を選択しましょう。

ドロップダウンから「access.log」を選択
ドロップダウンから「access.log」を選択

すると、サイトへのすべてのリクエスト(日付、時間、送信されたバイト数、ユーザーエージェント)が表示されます。また、各リクエストのHTTPステータスコードも確認可能です。

ステータスコードのリクエストを表示
ステータスコードのリクエストを表示

正常に処理されている場合、HTTPステータスコードは200になります。「411 Length Required」エラーが発生しているかを確かめるには、検索バーで「411」を検索してみてください。

「HTTP 411 Length Required」エラーを解決するには(4つの方法)

「HTTP 411 Length Required」エラーの有無は、サイトのログで確認することができますが、これはクライアントエラーであることを念頭に置いてください。

つまり、他の400番台のエラーと同様、ユーザー側の設定の誤りによって引き起こされるため、HTTPリクエストの編集が必要になります。以下、4つの解決方法を見ていきましょう。

1. 要求されたURLを確認する

まずは、400番台のエラーを修正する一般的な方法から試してみましょう。リクエストの情報を見直すことで、ブラウザが適切な認識を行えているかを確かめることができます。

400番台のエラーの場合、いずれのエラーであっても要求されたURLを見直すのが効果的です。サイトにアクセスするためにURLを手動で入力した場合は、タイプミスを確認するため、URLを再入力(コピー&ペースト推奨)してみてください。

URLに誤りがなく、エラーが表示されている場合は、キーワードと一緒に検索エンジンに入力してみるのも手です。例えば「site:kinsta.com speed up WooCommerce」と検索すると、WooCommerceストアの高速化に関するKinstaの記事がヒットします。

KinstaのWooCommerceストア高速化に関する記事
KinstaのWooCommerceストア高速化に関する記事

これが最も基本的なトラブルシューティングです。これで解決されない場合は、次のステップに移りましょう。

2. Content-Lengthヘッダーを設定する

「HTTP 411 Length Required」エラーに遭遇した場合、メッセージが示している通り、content-lengthヘッダーを設定するのが確実です。このエラーメッセージは、リクエストを処理するために渡すデータの長さ(Content Length)が必要であることを意味しているため、直接的な解決策になります。

例えば、example.comにPOSTリクエストを送信する場合は、以下の通りです。

curl --verbose -X POST https://example.com

content-lengthヘッダーの値は、リクエストに含まれるバイト数になります。このバイトは、2つの16進数で表され、桁数を2で割ることでコンテンツの長さを定義します。

例えば、「48656c6c6f21」は、16進数で12桁。この値を2で割ると、バイト単位に変換することができ、コンテンツの長さは6バイト(12÷2=6)ということになります。

このリクエストは、以下のようになります。

curl --verbose -X POST -H 'Content-Length: 6' https://example.com

Content-lengthを設定すると、411エラーは解消され、正しく処理されたことを示す200が返されるはずです。

3. ブラウザキャッシュをクリアする

content-lengthヘッダーを設定することで大抵の場合は解決しますが、万が一それでもエラーが続く場合には、他にも策はあります。

ウェブサイトに初めてアクセスすると、ブラウザによって特定のデータが保存されます。content-lengthヘッダーを設定してもエラーが消えない場合は、このキャッシュが原因になっている可能性があります。したがって、ブラウザキャッシュをクリアしてみてください。

Google Chromeの場合は、右上の縦三点リーダーをクリックし、「その他のツール」>「閲覧履歴データの削除」に移動します。

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

ポップアップ画面でが表示され、閲覧履歴、Cookie、キャッシュデータを管理することができます。「キャッシュされた画像とファイル」と、その他クリアしたいものがあれば選択し、「データを削除」をクリックします。

「データを削除」をクリック
「データを削除」をクリック

Safariの場合、ツールバーから「Safari」>「履歴を消去」を選択します。

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

次のポップアップ画面で、すべての履歴を削除するか、直近1時間のデータを削除するか、などの期間を選択することができます。選択後、「履歴を消去」をクリックして完了です。

すべての履歴を消去
すべての履歴を消去

Mozilla Firefoxでキャッシュをクリアする場合は、右上にあるハンバーガーアイコン(横線3本)を選択し、「履歴」を選択します。

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

次に「最近の履歴を消去」をクリックします。

「最近の履歴を消去」を選択
「最近の履歴を消去」を選択

キャッシュ」とその他クリアしたいものがあれば選択し、「OK」をクリックします。

削除したいデータを選択
削除したいデータを選択

これで、「HTTP 411 Length Required」エラーが解決したかどうか、再度サイトにアクセスしてみてください。

4. 最近の更新または拡張機能を無効にする

もう1つの解決策は、ブラウザの拡張機能を無効にするというもの。時折、特定の拡張機能がブラウザに干渉し、リクエストを認識しなくなることがあります。最近インストールした拡張機能があれば、削除してみてください。

Chromeでは、先ほどのブラウザキャッシュのクリアと同様、メニューバーから「その他のツール」を選択し、今度は「拡張機能」をクリックします。

Chromeで拡張機能を表示
Chromeで拡張機能を表示

拡張機能の一覧から対象の拡張機能を削除します。または、右下のスライダーをクリックして無効化することも可能です。

拡張機能を削除または無効化
拡張機能を削除または無効化

また、ソフトウェアの更新がこのエラーを引き起こすこともあります。Windowsの更新プログラムを削除するには、設定アプリで「更新とセキュリティ」>「Windows Update」に移動します。

macOSの場合は、これより複雑な操作になり、更新をロールバックするには、更新前のTime Machineバックアップが必要です。このバックアップを使ってデータを復元してください。

なお、古いソフトウェアバージョンに戻すことで、重要な機能やバグ修正を失う可能性があるため、この方法はあくまで最終手段として実行してください。

まとめ

サーバーがHTTPリクエストを拒否すると、HTTPステータスコード「411 Length Required」が返されます。あまり一般的に見られないため、途方に暮れてしまう方も多いはずです。これは、content-lengthヘッダーを設定していないことで、サーバーから情報を引き出せないことを意味します。このエラーの解決策は、案外シンプルです。

411エラーを解決する方法は、以下の通り。

  1. 要求されたURLを確認する
  2. content-lengthヘッダーを設定する
  3. ブラウザキャッシュをクリアする
  4. 最近の更新や拡張機能を無効にする

訪問者がサイトにアクセスできる状態を保つためには、パフォーマンス監視を行うことが重要です。Kinstaのホスティングプランなら、業界トップクラスのAPMツールを無料で利用することができます。APMツールで外部からのリクエストを確認すれば、HTTPエラーの解決も簡単です。