2012-03-26 14 views
9

Trovato questo errore su una grande $_GET query di dimensioni ~ 9000 simboli (sono divisi in ~ 10 variabili).URI richiesta troppo grande

Request-URI Too Large 

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

Che cosa è una soluzione per questo problema?

+2

perché hai un URL che è così a lungo? –

+5

Prova ad abbassare la dimensione dell'URI. Non ho mai superato i 200 caratteri, e questo è stato il modo di fare grandi cose su se stesso. Non è necessario ** OVER 9000 !!!! ** caratteri .... –

+2

"Qual è una soluzione alternativa per questo problema?" Abbreviare l'URL –

risposta

7

Non c'è alcuna soluzione se si desidera passare tutte queste informazioni con GET senza modificare la configurazione del server.

Altre soluzioni:

  • utilizzare Post con una forma (o di una forma nascosta e aggiungere evento onclick al vostro link che lo presenta)
  • Usa sessione. Quando il server genera il collegamento, memorizzarlo in $ _SESSION con un ID univoco (o RID, può essere md5 di URI completo) e passarlo tramite GET.
  • Utilizza database o l'archiviazione di file (con lo stesso procedimento della sessione)
+0

Vedi anche: [Come comprimere/decomprimere una lunga stringa di query in PHP?] (Http://stackoverflow.com/questions/2996049/how-to-compress-decompress-a-long-query-string-in- php) – hakre

+0

Penso che in questo modo tu possa spostare il problema in futuro, quando l'url sarà troppo grande anche con la compressione. È meglio cambiare logica se è necessario passare troppe informazioni tramite get. (I miei 2 cent) –

+0

Questa è solo una domanda correlata, se leggi la risposta accettata lì, puoi persino vedere che questo * non * è così tanto in futuro ma già nel passato. – hakre

1

Questo ha funzionato per me (di cui ha bisogno il supporto 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>