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

В моем приложении мы разрешаем только a-z A-Z и 0-9 символов. Я нашел ответ выше, используя « string % 1 === 0», если строка не начиналась с 0xnn (например, 0x10), а затем она возвращала бы ее как числовую, когда мы этого не хотели. Следующая простая ловушка в моей числовой проверке, похоже, делает трюк в наших конкретных случаях.

function isStringNumeric(str_input){   
    //concat a temporary 1 during the modulus to keep a beginning hex switch combination from messing us up   
    //very simple and as long as special characters (non a-z A-Z 0-9) are trapped it is fine   
    return '1'.concat(str_input) % 1 === 0;}

Внимание: это может быть связано с давней ошибкой в ​​Javascript и Actionscript [Number ("1" + the_string)% 1 === 0)], я не могу говорить за это, но это именно то, что нам нужно.

448
задан Mark Harrison 17 April 2010 в 21:26
поделиться

3 ответа

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

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

Примечание: серверам следует проявлять осторожность в зависимости от длины URI {{1} } больше 255 байт, потому что некоторые более старые реализации клиента или прокси могут не поддерживать эту длину должным образом.

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

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

444
ответ дан 22 November 2019 в 22:53
поделиться

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

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

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

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

Это та ошибка, на которую никто не ответил.

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

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

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

140
ответ дан 22 November 2019 в 22:53
поделиться

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

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

4
ответ дан 22 November 2019 в 22:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: