2012-03-26 16 views
9

Obtuve este error en una gran consulta de $_GET en tamaño ~ 9 000 símbolos (se dividen en ~ 10 variables).Request-URI Too Large

Request-URI Too Large 

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

¿Qué es una solución para este problema?

+2

¿Por qué tiene una dirección URL que es este tiempo? –

+5

Intenta reducir el tamaño de tu URI. Nunca he excedido los 200 caracteres, y eso era demasiado para sí mismo. No necesita ** MÁS DE 9000 !!!! ** caracteres .... –

+2

"¿Qué es una solución para este problema?" Acorte la URL –

Respuesta

7

No hay solución si desea pasar toda esta información con GET sin cambiar la configuración del servidor.

Otras soluciones:

  • uso post con una forma (o una forma oculta y añadir evento onclick en su enlace que enviarlo)
  • Uso sesión. Cuando el servidor genera el enlace, guárdelo en $ _SESSION con una identificación única (o RID, puede ser md5 del URI completo) y páselo a través de GET.
  • Utilizar base de datos o almacenamiento de archivos (con el mismo procedimiento de la sesión)
+0

Vea también: [¿Cómo comprimir/descomprimir una cadena de consulta larga en PHP?] (Http://stackoverflow.com/questions/2996049/how-to-compress-decompress-a-long-query-string-in- php) – hakre

+0

Creo que de esta manera solo se mueve el problema en el futuro, cuando la url será demasiado grande con compresión también. Es mejor cambiar la lógica si necesita pasar demasiada información a través de get. (Mis 2 centavos) –

+0

Esa es una pregunta relacionada solamente, si lee la respuesta aceptada allí, incluso puede ver que esto * no * tanto en el futuro, sino que ya lo hizo en el pasado. – hakre

1

Esto funcionó para mí (se necesita el apoyo 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> 
Cuestiones relacionadas