J'ai développé une application web PHP. Je donne la possibilité à l'utilisateur de mettre à jour plusieurs problèmes en une seule fois. Ce faisant, l'utilisateur rencontre parfois cette erreur. Existe-t-il un moyen d'augmenter la longueur de l'URL dans Apache?
103
Réponses:
Sous Apache, la limite est une valeur configurable,
LimitRequestLine
. Remplacez cette valeur par une valeur supérieure à sa valeur par défaut de 8190 si vous souhaitez prendre en charge un URI de demande plus long. La valeur est dans /etc/apache2/apache2.conf . Sinon, ajoutez une nouvelle ligne (LimitRequestLine 10000
) sousAccessFileName .htaccess
.Cependant, notez que si vous rencontrez réellement cette limite, vous en abusez probablement
GET
pour commencer. Vous devriez utiliserPOST
pour transmettre ce type de données - d'autant plus que vous admettez même que vous l'utilisez pour mettre à jour des valeurs. Si vous vérifiez le lien ci-dessus, vous remarquerez qu'Apache dit même «Dans des conditions normales, la valeur ne doit pas être modifiée par rapport à la valeur par défaut».la source
POST
. Rien dans l'utilisation de POST ne vous empêche de remplir le même formulaire avec les champs qui viennent d'être publiés, donc je ne suis pas sûr de ce que vous entendez par là.LimitRequestLine
nulle part dans votre fichier httpd.conf, ajoutez simplement la ligne vous-même où vous le souhaitez. Par exemple:LimitRequestLine 100000
Sur la base de la réponse de John, j'ai changé la demande GET en une demande POST. Cela fonctionne, sans avoir à modifier la configuration du serveur. Je suis donc allé chercher comment mettre en œuvre cela. Les pages suivantes ont été utiles:
Exemple jQuery Ajax POST avec PHP (notez la remarque de désinfection des données publiées) et
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
Fondamentalement, la différence est que la requête GET a l'url et les paramètres dans une chaîne, puis envoie null:
alors que la requête POST envoie l'url et les paramètres dans des commandes séparées:
Voici un exemple de travail:
ajaxPOST.html:
ajaxPOST.php:
Je viens d'envoyer plus de 12 000 caractères sans aucun problème.
la source
J'ai une solution de contournement simple.
Supposons que votre URI ait une chaîne
stringdata
trop longue. Vous pouvez simplement le diviser en un certain nombre de parties en fonction des limites de votre serveur. Ensuite, soumettez le premier, dans mon cas pour écrire un fichier. Ensuite, soumettez les suivants à ajouter aux données précédemment ajoutées.la source
J'ai eu cette erreur après avoir utilisé $ .getJSON () de JQuery. Je viens de changer pour poster:
la source
Un extrait de la RFC 2616: Hypertext Transfer Protocol - HTTP / 1.1 :
la source