请求URI太大


Request-URI Too Large

在一个大小约为9000个符号(它们被划分为约10个变量)的大型$_GET查询中出现此错误。

Request-URI Too Large
The requested URL's length exceeds the capacity limit for this server.

这个问题的解决方法是什么?

如果您想在不更改服务器配置的情况下通过GET传递所有这些信息,则没有解决方法。

其他解决方案:

  • 将POST用于表单(或隐藏表单,并在提交表单的链接处添加onclick事件)
  • 使用会话。当服务器生成链接时,将其存储在具有唯一id(或RID,它可以是完整URI的md5)的$_SESSION中,并通过GET传递
  • 使用数据库或文件存储(使用与会话相同的过程)

这对我有效(它需要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>

URI实际上有一个字符限制,这取决于以下几点。你可以在上查看

  • http://en.wikipedia.org/wiki/Query_string#Compatibility_issues

如果您也是开发服务器的人,一种解决方法是使用POST而不是GET。