http - строки - рекомендованная длина url




Какова максимальная длина URL-адреса в разных браузерах? (11)

Короткий ответ - фактический предел 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 символов, что похоже на спецификацию протокола sitemap. Однако они также обнаружили, что инструмент Google SERP не справляется с URL-адресами длиннее 1855 символов.

Дополнительный обзор браузера

Я протестировал следующее на сервере 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 лет, я постараюсь сохранить его в актуальном состоянии: по состоянию на сентябрь 2018 года совет по-прежнему стоит. Несмотря на то, что IE11 может принимать более длинные URL-адреса, вездесущность старых установок IE и ограничений поисковой системы означает, что вы не можете использовать до 2000 символов, это лучшая общая политика.

Какова максимальная длина URL-адреса в разных браузерах? Разница между браузерами?

Указывает ли это протокол HTTP?


ASP.NET 2 и службы отчетов SQL Server 2005 имеют ограничение в 2028. Я нашел это с большим трудом, когда мой динамический генератор URL-адресов не передавал некоторые параметры в отчет за пределами этой точки. Это было в Internet Explorer 8.


В iOS нет ограничений для схем URL. Принимается даже 300-мегабайтный длинный URL-адрес. Вы можете попробовать такой длинный URL-адрес, как это:

NSString *path = [@"a:" stringByPaddingToLength:314572800 withString:@"a" startingAtIndex:0];
NSString *js = [NSString stringWithFormat:@"window.location.href = \"%@\";", path];
[self.webView stringByEvaluatingJavaScriptFromString:js];

И поймайте, если это удастся:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSLog(@"length: %@", @(request.URL.absoluteString.length));
    return YES;
}

Директива Limit request line устанавливает максимальную длину URL-адреса. По умолчанию установлено значение 8190, что дает вам много места. Однако другие серверы и некоторые просмотры ограничивают длину больше.

Поскольку все параметры передаются по строке URL, элементы, которые были в пароле скрытых полей, также будут отображаться в URL-адресе, конечно. Ни один из мобильных устройств не должен использоваться для реальных мер безопасности, и в лучшем случае его следует рассматривать как косметическую безопасность.


На самом деле нет универсальной максимальной длины URL. Максимальная длина определяется только тем, что клиентский браузер предпочитает поддерживать, что сильно варьируется. Ограничение 2,083 доступно только в Internet Explorer (все версии до 7.0). Максимальная длина в Firefox и Safari, по-видимому, неограничена, хотя нестабильность возникает с URL-адресами, достигающими около 65 000 символов. Похоже, что Opera не имеет максимальной длины URL-адреса и не страдает от нестабильности на чрезвычайно длинных длинах.


Почему Internet Explorer ограничивает только 2K, в то время как IIS имеет ограничение в 16K? Я не думаю, что это имеет смысл.

Поэтому я хочу начать эксперимент по ограничениям размера URL-адреса запроса Ajax.

Я установил мой HTTP-коннектор Tomcat maxHttpHeaderSize = "1048576". И подготовил очень длинный URL.

Затем я отправляю запрос с длинным URL следующим образом:

var url="/ajax/url-length.jsp";
jQuery.ajax(url,{data:{q:"0".repeat(1048000-url.length-4)}});

Отчеты jQuery сделаны. Tomcat сообщает, что запрошенный URL-адрес составляет 1048015 байт. Он был протестирован с Chrome 50 и Internet Explorer 11.

Поэтому веб-браузеры не будут усекать или ограничить ваш URL намеренно при отправке запросов Ajax.


Спецификация HTTP 1.1 говорит:

URI в HTTP могут быть представлены в абсолютной форме или относительно некоторых
известный базовый URI [11], в зависимости от контекста их использования. Два
формы дифференцируются тем фактом, что абсолютные URI всегда начинаются
с именем схемы, за которым следует двоеточие. Для получения окончательной информации о
Синтаксис и семантика URL-адреса см. В разделе «Унифицированные идентификаторы ресурса (URI): общий синтаксис и семантика», RFC 2396 [42] (который заменяет RFC 1738 [4] и RFC 1808 [11]). В этой спецификации используются определения «URI-reference», «absoluteURI», «relativeURI», «port»,
«host», «abs_path», «rel_path» и «авторитет» из этого
Спецификация.

Протокол HTTP не устанавливает априорный предел по длине
URI. Серверы ДОЛЖНЫ иметь возможность обрабатывать URI любого ресурса, который они обслуживают, и ДОЛЖНЫ иметь возможность обрабатывать URI неограниченной длины, если они предоставляют формы на основе GET, которые могут генерировать такие URI. * Сервер ДОЛЖЕН возвращать 414 (Request-URI Too Long) если URI больше, чем может обрабатывать сервер (см. раздел 10.4.15).

Примечание. Серверы должны быть осторожны в зависимости от длины URI выше 255 байт, потому что некоторые старые реализации клиента или прокси-сервера могут не поддерживать эту длину должным образом.

Как уже упоминалось @Brian, у клиентов HTTP (например, браузеров) могут быть свои собственные ограничения, а серверы HTTP будут иметь разные пределы.


У меня есть опыт работы с SharePoint 2007, 2010 и существует предел длины URL-адреса, который вы можете создать с серверной стороны в этом случае SharePoint, поэтому он зависит главным образом от: 1) клиента (браузера, версии и ОС) и 2) серверная технология, IIS, Apache и т. д.


Служба поддержки Microsoft заявляет: «Максимальная длина URL-адреса составляет 2083 символа в Internet Explorer».

У IE проблемы с URL-адресами дольше. Firefox, похоже, отлично работает с символами> 4k.


URI RFC (из которых URL-адреса являются подмножеством) не определяет максимальную длину, однако он рекомендует , чтобы часть имени хоста URI (если применимо) не превышала 255 символов:

Производители URI должны использовать имена, соответствующие синтаксису DNS, даже если использование DNS не сразу становится очевидным и должно ограничивать эти имена длиной не более 255 символов.

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


WWW Часто задаваемые вопросы: Какова максимальная длина URL-адреса? имеет собственный ответ, основанный на эмпирических тестах и ​​исследованиях. Короткий ответ заключается в том, что при переходе более 2048 символов Internet Explorer недовольны, и, следовательно, это предел, который вы должны использовать. См. Страницу для длинного ответа.





browser