Ich habe eine PHP-Web-App entwickelt. Ich gebe dem Benutzer die Möglichkeit, mehrere Probleme auf einmal zu aktualisieren. Dabei stößt der Benutzer manchmal auf diesen Fehler. Gibt es eine Möglichkeit, die Länge der URL in Apache zu erhöhen?
php
apache
http-status-codes
JPro
quelle
quelle
Antworten:
Unter Apache ist das Limit ein konfigurierbarer Wert
LimitRequestLine
. Ändern Sie diesen Wert in einen Wert, der größer als der Standardwert von 8190 ist, wenn Sie einen längeren Anforderungs-URI unterstützen möchten. Der Wert befindet sich in /etc/apache2/apache2.conf . Wenn nicht, fügen Sie eine neue Zeile (LimitRequestLine 10000
) unter hinzuAccessFileName .htaccess
.Beachten Sie jedoch, dass Sie wahrscheinlich zunächst missbrauchen, wenn Sie tatsächlich auf dieses Limit stoßen
GET
. Sie solltenPOST
diese Art von Daten verwenden, zumal Sie sogar zugeben, dass Sie sie zum Aktualisieren von Werten verwenden. Wenn Sie den obigen Link überprüfen, werden Sie feststellen, dass Apache sogar sagt: "Unter normalen Bedingungen sollte der Wert nicht vom Standardwert geändert werden."quelle
POST
. Nichts an der Verwendung von POST hindert Sie daran, dasselbe Formular mit den gerade geposteten Feldern zu füllen. Ich bin mir also nicht sicher, was Sie damit meinen.LimitRequestLine
nirgendwo in Ihrer httpd.conf-Datei finden, fügen Sie die Zeile einfach selbst hinzu, wo immer Sie möchten. Zum Beispiel:LimitRequestLine 100000
Basierend auf Johns Antwort habe ich die GET-Anfrage in eine POST-Anfrage geändert. Es funktioniert, ohne dass die Serverkonfiguration geändert werden muss. Also habe ich mir überlegt, wie ich das umsetzen kann. Die folgenden Seiten waren hilfreich:
jQuery Ajax POST-Beispiel mit PHP (Beachten Sie die Anmerkung zur Bereinigung geposteter Daten) und
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
Grundsätzlich besteht der Unterschied darin, dass die GET-Anforderung die URL und die Parameter in einer Zeichenfolge enthält und dann null sendet:
Während die POST-Anforderung die URL und die Parameter in separaten Befehlen sendet:
Hier ist ein Arbeitsbeispiel:
ajaxPOST.html:
ajaxPOST.php:
Ich habe gerade über 12.000 Zeichen ohne Probleme gesendet.
quelle
Ich habe eine einfache Problemumgehung.
Angenommen, Ihre URI hat eine
stringdata
zu lange Zeichenfolge . Sie können es einfach in mehrere Teile aufteilen, abhängig von den Grenzen Ihres Servers. Dann reichen Sie die erste ein, in meinem Fall, um eine Datei zu schreiben. Senden Sie dann die nächsten, um sie an zuvor hinzugefügte Daten anzuhängen.quelle
Ich habe diesen Fehler erhalten, nachdem ich $ .getJSON () von JQuery verwendet habe. Ich habe gerade geändert, um zu posten:
quelle
Ein Auszug aus dem RFC 2616: Hypertext Transfer Protocol - HTTP / 1.1 :
quelle