Максимальная длина HTTP GET-запроса?

Какова максимальная длина HTTP GET-запроса? Определена ли ошибка ответа, которую сервер может / должен вернуть, если он получает запрос GET, превышающий эту длину?

обновление: как указано в тегах, это происходит в контексте API веб-службы, хотя интересно также увидеть ограничения браузера.

7 ответов

Решение

Ограничение зависит как от сервера, так и от используемого клиента (и, если применимо, также от прокси-сервера, который использует сервер или клиент).

Большинство веб-серверов имеют ограничение 8192 байта (8 КБ), которое обычно настраивается где-то в конфигурации сервера. Что касается клиентской части, спецификация HTTP 1.1 даже предупреждает об этом, вот выдержка из главы 3.2.1:

Примечание. Серверы должны соблюдать осторожность при зависимости длины URI выше 255 байт, поскольку некоторые старые реализации клиента или прокси-сервера могут не поддерживать эти длины должным образом.

В MSIE и Safari ограничение составляет около 2 КБ, в Opera - около 4 КБ, а в Firefox - около 8 КБ. Таким образом, мы можем предположить, что 8 КБ - это максимально возможная длина, а 2 КБ - это более доступная длина, на которую можно полагаться на стороне сервера, и что 255 байт - это самая безопасная длина, позволяющая предположить, что весь URL-адрес поступит.

Если лимит превышен в браузере или на сервере, большинство из них просто усекает символы вне предела без какого-либо предупреждения. Однако некоторые серверы могут отправлять ошибку HTTP 414. Если вам нужно отправить большие данные, то лучше использовать POST вместо GET. Его предел намного выше, но в большей степени зависит от используемого сервера, чем от клиента. Обычно около 2 ГБ допускается средним веб-сервером. Это также настраивается где-то в настройках сервера. Средний сервер будет отображать специфичную для сервера ошибку / исключение при превышении предела POST, обычно в виде ошибки HTTP 500.

Вы задаете два отдельных вопроса здесь:

Какова максимальная длина HTTP GET-запроса?

Как уже упоминалось, HTTP сам по себе не накладывает жестко заданного ограничения на длину запроса; но браузеры имеют ограничения в пределах от 2 до 8 КБ (255 байт, если считать очень старые браузеры).

Определена ли ошибка ответа, которую сервер может / должен вернуть, если он получает запрос GET, превышающий эту длину?

Это тот, на кого никто не ответил.

HTTP 1.1 определяет код статуса 414 Request-URI Too Long для случаев, когда достигнут определенный сервером предел. Вы можете увидеть более подробную информацию о RFC 2616.

В случае определенных клиентом ограничений нет смысла возвращать что-либо серверу, поскольку сервер вообще не получит запрос.

Надеюсь это поможет.

Ограничения браузера:

Browser     Address bar   document.location  
                          or anchor tag
------------------------------------------
Chrome          32779           >64k      
Android          8192           >64k                         
Firefox          >64k           >64k      
Safari           >64k           >64k      
IE11             2047           5120   
Edge 16          2047          10240

хочу больше? см. этот вопрос на переполнении стека

Подобный вопрос здесь: есть ли ограничение на длину запроса GET?

Я достиг предела и на моей учетной записи общего хостинга, но я думаю, что браузер вернул пустую страницу, прежде чем он попал на сервер.

Технически я видел, что HttpGet будет иметь проблемы, если длина URL превышает 2000 символов. В этом случае лучше использовать HttpPost или разделить URL.

Как уже упоминалось, HTTP сам по себе не накладывает жестко заданного ограничения на длину запроса; но браузеры имеют ограничения в пределах 2048 символов, разрешенных в методе get.

ПОЛУЧИТЬ ЗАПРОС с помощью браузера Chrome Да. Нет ограничений на запрос GET.

I am able to send ~4000 characters as part of the query string using chrome browser & curl command both. 

Я использую сервер Tomcat 8.x, который вернул ожидаемый ответ 200 OK.

Вот снимок экрана http-запроса chrome (скрытие конечной точки, которую я пробовал по соображениям безопасности):

ОТВЕТ ПОЛУЧИТЬ используя браузер Chrome

Другие вопросы по тегам