Коротка відповідь - фактична межа 2000 символів
Якщо тримати URL-адреси менше 2000 символів, вони працюватимуть практично в будь-якій комбінації програмного забезпечення клієнта та сервера.
Якщо ви орієнтовані на конкретні веб-переглядачі, див. Нижче для отримання детальної інформації про конкретні обмеження.
Більш довга відповідь - по-перше, стандарти ...
Розділ 3.2.1 говорить RFC 2616 (протокол передачі гіпертексту HTTP / 1.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 символів ...
Майте на увазі, що в протоколі мапи сайтів , який дозволяє сайту інформувати пошукові системи про доступні сторінки, в URL-адресі може бути обмежено 2048 символів. Якщо ви збираєтесь використовувати мапи сайту, для вас вирішено обмеження! (див. відповідь Калін-Андрія Бурлоу нижче)
Також з 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 символів - найкраща загальна політика.