Я разработал веб-приложение на PHP. Я даю пользователю возможность обновить несколько проблем за один раз. При этом иногда пользователь сталкивается с этой ошибкой. Есть ли способ увеличить длину URL-адреса в apache?
103
Я разработал веб-приложение на PHP. Я даю пользователю возможность обновить несколько проблем за один раз. При этом иногда пользователь сталкивается с этой ошибкой. Есть ли способ увеличить длину URL-адреса в apache?
Ответы:
В Apache предел - это настраиваемое значение
LimitRequestLine
. Измените это значение на большее, чем значение по умолчанию 8190, если вы хотите поддерживать более длинный URI запроса. Значение находится в /etc/apache2/apache2.conf . Если нет, добавьте новую строку (LimitRequestLine 10000
) подAccessFileName .htaccess
.Однако учтите, что если вы на самом деле столкнулись с этим пределом, вы, вероятно,
GET
с самого начала злоупотребляете . Вы должны использовать егоPOST
для передачи такого рода данных - тем более, что вы даже признаете, что используете его для обновления значений. Если вы проверите ссылку выше, вы заметите, что Apache даже говорит: «В нормальных условиях значение не должно изменяться по сравнению со значением по умолчанию».источник
POST
. Ничто в использовании POST не мешает вам заполнять ту же форму только что опубликованными полями, поэтому я не уверен, что вы имеете в виду.LimitRequestLine
в своем файле httpd.conf, просто добавьте строку самостоятельно в любом месте. Например:LimitRequestLine 100000
Основываясь на ответе Джона, я изменил запрос GET на запрос POST. Он работает без изменения конфигурации сервера. Итак, я пошел искать, как это реализовать. Следующие страницы были полезны:
Пример jQuery Ajax POST с PHP (обратите внимание на примечание об очистке опубликованных данных) и
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
По сути, разница в том, что запрос GET имеет URL-адрес и параметры в одной строке, а затем отправляет null:
тогда как запрос POST отправляет URL-адрес и параметры в отдельных командах:
Вот рабочий пример:
ajaxPOST.html:
ajaxPOST.php:
Я просто отправил без проблем более 12000 символов.
источник
У меня есть простой обходной путь.
Предположим, в вашем URI
stringdata
слишком длинная строка . Вы можете просто разбить его на несколько частей в зависимости от ограничений вашего сервера. Затем отправьте первый, в моем случае для записи файла. Затем отправьте следующие для добавления к ранее добавленным данным.источник
Я получил эту ошибку после использования $ .getJSON () из JQuery. Я просто изменил сообщение:
источник
Выдержка из RFC 2616: Протокол передачи гипертекста - HTTP / 1.1 :
источник