Существует ли ограничение на длину запроса GET?
Существует ли ограничение на длину запроса GET?
Ответ 1
Не в RFC, нет, но существуют практические ограничения.
Протокол HTTP не устанавливает априорного ограничения на длину URI. Серверы ДОЛЖНЫ иметь возможность обрабатывать URI любого ресурса, который они служить, и СЛЕДУЕТ иметь возможность обрабатывать URI неограниченной длины, если они предоставлять формы на основе GET, которые могут генерировать такие URI. Сервер СЛЕДУЕТ возвращать 414 (Request-URI Too Long) статус, если URI длиннее чем сервер может обрабатывать (см. раздел 10.4.15).
Примечание. Серверы должны быть осторожны в зависимости от длины URI выше 255 байт, потому что некоторые старые реализации клиента или прокси-сервера могут не поддерживать эту длину должным образом.
Ответ 2
Эта статья довольно хорошо подводит итоги
Сводка: это зависит от реализации, поскольку в RFC не указано ограничение. Было бы безопасно использовать до 2000 символов (предел IE). Если вы находитесь где-то рядом с этой длиной, вы должны убедиться, что вам действительно нужны URI, что долго, возможно, альтернативный дизайн может обойти это.
URI должны читаться, даже если они используются для отправки данных.
Ответ 3
Спецификация не ограничивает длину запроса HTTP Get, но разные браузеры реализуют свои собственные ограничения. Например, Internet Explorer имеет ограничение, реализованное с 2083 символами.
Ответ 4
Как запрошено пользователем Erickson, я публикую свой комментарий в качестве ответа:
Я провел еще несколько тестов с IE8, IE9, FF14, Opera11, Chrome20 и Tomcat 6.0.32 (новая установка), Джерси 1.13 на стороне сервера. Я использовал функцию jQuery $.getJson и JSONP. Результаты: все браузеры допускают около 5400 символов. FF и IE9 сделали примерно до 6200 символов. Все выше возвращено "400 Bad request". Я больше не исследовал, что было ответственным за 400. Я был в порядке с максимумом, который я нашел, потому что мне понадобилось около 2000 символов в моем случае.
Ответ 5
W3C однозначно отказался от этого как мифа здесь
Ответ 6
setFixedLengthStreamingMode (int) с параметрами contentLength может установить фиксированную длину тела запроса HTTP.