web-dev-qa-db-ja.com

リクエストURIが大きすぎます

サイズが〜9 000シンボルの大きな$_GETクエリでこのエラーが発生しました(これらは〜10の変数に分割されています)。

Request-URI Too Large

The requested URL's length exceeds the capacity limit for this server.

この問題の回避策は何ですか?

10
Jasper

サーバー構成を変更せずにGETでこれらすべての情報を渡す場合の回避策はありません。

その他の解決策:

  • POSTをフォームで使用します(または非表示のフォームで、送信するリンクにonclickイベントを追加します)
  • セッションを使用します。サーバーがリンクを生成したら、一意のID(またはRID、完全なURIのmd5の場合もあります)を付けて$ _SESSIONに保存し、GETを介して渡します。
  • データベースまたはファイルストレージを使用する(セッションの同じ手順で)
8
Luca Rainone

これは私のために働きました(formDataサポートが必要です):

<script>
  //Load form
  var formData = new FormData();
  formData.append("param_name1", "param_content1");
  formData.append("param_name2", "param_content2"); 
  formData.append("param_nameN", "param_contentN"); 

  //Send form via AJAX
  var xhr = new XMLHttpRequest();
  xhr.open("POST", YOUR_URL);  
  xhr.send(formData);
</script>
1
nicolascolman

まあ、URIは実際にはいくつかの事柄に応じて文字制限があります。あなたはそれをチェックアウトすることができます

1つの回避策は、サーバーを開発している場合でも、GETの代わりにPOSTを使用することです。

0
Croo