Какова максимальная длина HTTP GET- запроса?
Определена ли ошибка ответа, которую сервер может / должен вернуть, если он получает запрос GET, который превышает эту длину?
Это в контексте API веб-сервиса, хотя интересно также увидеть ограничения браузера.
web-services
http
Марк Харрисон
источник
источник
Ответы:
Ограничение зависит как от сервера, так и от используемого клиента (и, если применимо, также от прокси-сервера, который использует сервер или клиент).
Большинство веб-серверов имеют ограничение в 8192 байта (8 КБ), которое обычно настраивается где-то в конфигурации сервера. Что касается клиентской части, спецификация HTTP 1.1 даже предупреждает об этом. Вот выдержка из главы 3.2.1 :
Ограничение в Internet Explorer и Safari составляет около 2 КБ, в Opera около 4 КБ и в Firefox около 8 КБ. Таким образом, мы можем предположить, что 8 КБ - это максимально возможная длина, а 2 КБ - это более доступная длина, на которую можно полагаться на стороне сервера, и что 255 байт - это самая безопасная длина для предположения, что весь URL-адрес поступит.
Если лимит превышен в браузере или на сервере, большинство из них просто усекает символы вне предела без какого-либо предупреждения. Однако некоторые серверы могут отправлять ошибку HTTP 414 . Если вам нужно отправить большие данные, тогда лучше использовать POST вместо GET. Его предел намного выше, но в большей степени зависит от используемого сервера, чем от клиента. Обычно до 2 ГБ допускается средним веб-сервером. Это также настраивается где-то в настройках сервера. Средний сервер будет отображать специфичную для сервера ошибку / исключение при превышении предела POST, обычно в виде ошибки HTTP 500.
источник
Вы задаете два отдельных вопроса здесь:
Как уже упоминалось, HTTP сам по себе не накладывает жестко заданного ограничения на длину запроса; но браузеры имеют ограничения в пределах от 2 КБ до 8 КБ (255 байт, если считать очень старые браузеры).
Это тот, на кого никто не ответил.
HTTP 1.1 определяет код состояния
414 Request-URI Too Long
для случаев, когда достигается определенный сервером предел. Вы можете увидеть более подробную информацию о RFC 2616 .В случае определенных клиентом ограничений нет никакого смысла возвращать что-либо серверу, потому что сервер вообще не получит запрос.
источник
Ограничения браузера:
Хочу больше? Смотрите этот вопрос на переполнение стека .
источник
Подобный вопрос здесь: есть ли ограничение на длину запроса GET?
Я достиг предела и на моей учетной записи общего хостинга, но я думаю, что браузер вернул пустую страницу, прежде чем он попал на сервер.
источник
Технически, я видел, что HTTP GET будет иметь проблемы, если длина URL превышает 2000 символов. В этом случае лучше использовать HTTP POST или разделить URL.
источник
Как уже упоминалось, HTTP сам по себе не накладывает жестко заданного ограничения на длину запроса; но браузеры имеют ограничения в пределах 2048 символов, разрешенных в методе GET.
источник
Да. Нет никаких ограничений на запрос GET.
Я могу отправить ~ 4000 символов как часть строки запроса, используя браузер Chrome и команду curl.
Я использую сервер Tomcat 8.x, который вернул ожидаемый ответ 200 OK.
Вот снимок экрана HTTP-запроса Google Chrome (скрытие конечной точки, которую я пробовал по соображениям безопасности):
ОТВЕТ
источник