Какое максимальное количество символов допустимо в URL?

Ответ

Строгого стандарта на максимальную длину URL нет, но существуют практические ограничения, накладываемые браузерами и серверами.

Ограничения браузеров (для GET-запросов):

Браузеры ограничивают длину URL в адресной строке и при отправке запросов.

  • Chrome, Firefox, Safari: ~ 32 000 символов (фактический лимит очень высок, но для адресной строки ~2000).
  • Internet Explorer (исторически): 2 083 символа — самый строгий лимит, который долгое время был ориентиром для совместимости.

Ограничения серверов:

Серверное ПО может иметь свои лимиты на длину HTTP-запроса.

  • Apache (LimitRequestLine): По умолчанию 8 192 символов.
  • Nginx (large_client_header_buffers): По умолчанию 4-8 КБ (4 096 - 8 192 символов).
  • Microsoft IIS: 16 384 символов.

Рекомендация:

Для обеспечения максимальной совместимости не рекомендуется превышать длину URL в 2 000 символов. Для передачи больших объемов данных используйте POST-запросы с телом (body).

Пример проверки на клиенте (JavaScript):

// Предупреждение о потенциально слишком длинном URL для GET-параметров
const currentUrl = window.location.href;
if (currentUrl.length > 2000) {
    console.warn("URL превышает рекомендуемую длину для надежной совместимости.");
}

Ответ 18+ 🔞

А, ну это ж классика, блядь! Сидишь ты такой, клепаешь свой сайт, и думаешь: "А дай-ка я в URL всю "Войну и мир" передам через GET-параметры, хуле!" А потом — пиздец, накрывается всё медным тазом, и ты сидишь, чешешь репу: "Почему не работает, ёпта?"

Так вот, слушай сюда, распиздяй. Жёсткого-то стандарта на длину URL — нету, блядь. Но есть куча практических пиздюлей, которые тебе навешают браузеры и сервера.

Ограничения от браузеров (когда ты GET-запросы шлёшь):

Браузеры — они тоже не безграничны, сука. Адресную строку они тебе дохуя не растянут.

  • Хром, Фаерфокс, Сафари: Ну, в теории, могут проглотить тыщ 32 символа, овердохуища. Но на практике, в адресную строку больше пары тысяч не впихнёшь — глаз сломаешь.
  • Internet Explorer (старый, ёбаный): Вот этот пидарас шерстяной был самый строгий — всего 2083 символа! И из-за него все долго поджимали жопы, чтобы в этот лимит вписаться.

Ограничения от серверов (куда ты этот свой длинный URL шлёшь):

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

  • Apache (директива LimitRequestLine): По дефолту — 8192 символа. Уже лучше, но не расслабляйся.
  • Nginx (настройка large_client_header_buffers): Тоже по умолчанию 4-8 килобайт (это те же 4-8 тысяч символов).
  • Microsoft IIS: 16384 символа. Ну, микрософтовские, они такие.

Так что делать-то, мудя?

Главная рекомендация, чтобы не было потом волнения ебать — не выёбывайся и не делай URL длиннее 2000 символов. Вообще. Это как золотое правило, блядь. А если тебе нужно передать овердохуище данных — не будь идиотом, используй POST-запрос и пихай всё в тело запроса (body), там хоть три тома Толстого отправляй.

Вот, глянь, как на клиенте можно проверить, не обосрался ли ты с длиной:

// Просто предупредит, если URL уже как хвост кометы
const currentUrl = window.location.href;
if (currentUrl.length > 2000) {
    console.warn("URL превышает рекомендуемую длину для надежной совместимости.");
}

Короче, думай головой, а не жопой. Всё гениальное — просто, а всё сложное — в POST.