Краткий ответ - фактический лимит в 2000 символов
Если вы держите URL-адреса длиной до 2000 символов, они будут работать практически в любой комбинации клиентского и серверного программного обеспечения.
Если вы ориентируетесь на определенные браузеры, см. Ниже подробности конкретных ограничений.
Более длинный ответ - сначала стандарты ...
RFC 2616 (протокол передачи гипертекста HTTP / 1.1) раздел 3.2.1 говорит
Протокол HTTP не устанавливает каких-либо априорных ограничений на длину URI. Серверы ДОЛЖНЫ иметь возможность обрабатывать URI любого ресурса, который они обслуживают, и ДОЛЖНЫ иметь возможность обрабатывать URI неограниченной длины, если они предоставляют формы на основе GET, которые могут генерировать такие URI. Сервер ДОЛЖЕН вернуть статус 414 (Request-URI Too Long), если URI длиннее, чем может обработать сервер (см. Раздел 10.4.15).
Этот RFC устарел в RFC7230, который является обновлением спецификации HTTP / 1.1. Он содержит похожий язык, но также предлагает следующее:
На практике встречаются различные специальные ограничения на длину строки запроса. РЕКОМЕНДУЕТСЯ, чтобы все отправители и получатели HTTP поддерживали, как минимум, длину строки запроса в 8000 октетов.
... и реальность
Это то, что говорят стандарты . На самом деле на boutell.com была статья (ссылка идет на резервное копирование в Интернет-архив), в которой обсуждалась поддержка отдельных реализаций браузера и сервера. Исполнительное резюме:
Чрезвычайно длинные URL-адреса обычно являются ошибкой. URL-адреса длиной более 2000 символов не будут работать в самых популярных веб-браузерах. Не используйте их, если вы хотите, чтобы ваш сайт работал для большинства пользователей Интернета.
(Примечание: это цитата из статьи , написанной в 2006 году , но в 2015 году снижение означает использование в IE , что более длинные URL , делают работу для большинства Однако, IE все еще имеет ограничение ....)
Ограничения Internet Explorer ...
Максимальная длина URL IE8 составляет 2083 символа , и, похоже, IE9 имеет аналогичное ограничение .
Я протестировал IE10, и адресная строка будет принимать только 2083 символа. Вы можете щелкнуть URL-адрес, который длиннее этого, но в адресной строке по-прежнему будет отображаться только 2083 символа этой ссылки.
В блоге IE Internals есть хорошая рецензия, в которой рассказывается об этом.
Есть смешанные отчеты IE11 поддерживает более длинные URL-адреса - см. Комментарии ниже. Учитывая, что некоторые люди сообщают о проблемах, общий совет остается в силе.
Поисковые системы, такие как URL <2048 символов ...
Помните, что протокол sitemaps , который позволяет сайту информировать поисковые системы о доступных страницах, имеет ограничение в 2048 символов в URL. Если вы собираетесь использовать файлы Sitemap, для вас определено ограничение! (см. ответ Калина-Андрея Бурлойу ниже)
Также в 2010 году было проведено исследование максимальной длины URL, которую поисковые системы будут сканировать и индексировать . Они обнаружили, что ограничение составляет 2047 символов, что похоже на спецификацию протокола карты сайта. Однако они также обнаружили, что инструмент Google SERP не справляется с URL-адресами длиннее 1855 символов.
CDN имеют ограничения
CDN также накладывают ограничения на длину URI и возвращают a, 414 Too long request
когда эти пределы достигнуты, например:
(благодарность timrs2998 за предоставление этой информации в комментариях)
Дополнительный обзор браузера
Я протестировал следующее на сервере Apache 2.4, настроенном с очень большими LimitRequestLine и LimitRequestFieldSize .
Browser Address bar document.location
or anchor tag
------------------------------------------
Chrome 32779 >64k
Android 8192 >64k
Firefox >64k >64k
Safari >64k >64k
IE11 2047 5120
Edge 16 2047 10240
Смотрите также этот ответ от Матаса Вайткявичюса ниже.
Эта информация актуальна?
Это популярный вопрос, и поскольку первоначальному исследованию было ~ 12 лет, я постараюсь держать его в актуальном состоянии: по состоянию на январь 2020 года этот совет все еще остается в силе. Несмотря на то, что IE11 может принимать более длинные URL-адреса, повсеместность более старых установок IE плюс ограничения поисковой системы означают, что оставаться под 2000 символами - лучшая общая политика.