Подтвердить что ты не робот

Каков предел для параметров QueryString/GET/URL

Каков предел для параметров QueryString/GET/URL

4b9b3361

Ответ 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 символов. Вероятно, это зависит от браузера...