414 URI Too Long

URL がサーバーで扱える長さを超えています。

使いどころ

巨大なクエリ文字列。データを POST のボディに移してください。

よくある原因と対処法

リクエスト URL が上限を超えています。典型的なきっかけは、フィルターや ID のリストから組み立てた巨大なクエリ文字列、URL 内の base64 データ、1 周ごとにパラメーターを追加するリダイレクトループ(returnUrl の中に入れ子になった returnUrl)、積み重なったトラッキングパラメーターです。nginx はリクエスト行が large_client_header_buffers(デフォルトは 8k)に収まらないと 414 を返し、Apache の LimitRequestLine は 8190 バイトです。

ブラウザー、CDN、アナリティクス、ログツールのどれでも安全なように、URL は約 2,000 文字以内に抑えましょう。Cloudflare は URL を 16 KB に制限しています。対処法は、データを POST のボディに移すか、フィルターを検索エンドポイントに POST して、URL に入れられる短い ID を返してもらうことです。サーバーの制限を引き上げることもできますが、経路上のプロキシにはそれぞれ独自の制限があります。

クライアントエラー (4xx)

4xx はクライアントエラーです。リクエスト自体が誤っている、認証されていない、または存在しないものを指しています。同じリクエストを再試行しても解決しません。

レスポンスでの表示

HTTP/1.1 414 URI Too Long

返し方

Node.js / Expressres.status(414).end()
Python / Flaskreturn '', 414
nginxreturn 414;

確認方法

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP ステータスコードを開く