Каков предел для параметров QueryString/GET/URL
Каков предел для параметров QueryString/GET/URL
Ответ 1
В теории нет предела. Для URL-адресов HTTP HTTP 1.1 спецификация гласит:
Протокол HTTP не устанавливает априорного ограничения на длину URI. Серверы ДОЛЖНЫ иметь возможность обрабатывать URI любого ресурса, который они служить, и СЛЕДУЕТ иметь возможность обрабатывать URI неограниченной длины, если они предоставлять формы на основе GET, которые могут генерировать такие URI. Сервер СЛЕДУЕТ возвращать 414 (Request-URI Too Long) статус, если URI длиннее чем сервер может обрабатывать (см. раздел 10.4.15).
Но на практике многие клиенты и серверы поддерживают только URL-адреса до определенной длины. Правило не должно использовать URL длиной до 2000 символов (процентная кодировка уже учтена).
Ответ 2
Нет определенного предела. Однако RFC 2068 гласит:
Протокол HTTP не устанавливает априорного ограничения длины URI. Серверы ДОЛЖНЫ иметь возможность обрабатывать URI любого ресурса, который они обслуживают, и СЛЕДУЕТ иметь возможность обрабатывать URI неограниченной длины, если они предоставляют формы на основе GET, которые могут генерировать такие URI. Сервер ДОЛЖЕН возвращать 414 (Request-URI Too Long), если URI длиннее, чем сервер может обрабатывать (см. Раздел 10.4.15). Примечание. Серверы должны быть осторожны в зависимости от длины URI выше 255 байт, поскольку некоторые старые реализации клиента или прокси-сервера могут не поддерживать эту длину должным образом.
Ответ 3
Хотя официально ограничений нет, во многих рекомендациях по настройке безопасности указывается, что для maxQueryStrings на сервере должно быть установлено максимальное ограничение в 1024 символа, а во всем URL-адресе, включая строку запроса, должно быть не более 2048 символов. Это сделано для того, чтобы предотвратить уязвимость Slow HTTP Request на веб-сервере и предотвратить медленные DDOS-атаки, которые обнаруживаются на сканере веб-приложений Qualys и других сканерах безопасности.
Пожалуйста, посмотрите код ниже для серверов Windows IIS с Web.config:
<security>
<requestFiltering>
<requestLimits maxQueryString="1024" maxUrl="2048">
<headerLimits>
<add header="Content-type" sizeLimit="100" />
</headerLimits>
</requestLimits>
</requestFiltering>
</security>
Ответ 4
Я помню, что стандарт определяет 1024 байта для URL (включая строку запроса), но я также где-то читал, что Internet Explorer принимает до 2083 символов. Вероятно, это зависит от браузера...