Каков оптимальный предел для длины URL? 100, 200+ - PullRequest
6 голосов
/ 07 октября 2008

У меня есть платформа ASP.Net 3.5 и сервер Windows 2003 со всеми обновлениями.

Для .Net существует ограничение, которое не может обрабатывать более 260 символов . Более того, если вы посмотрите его в Интернете, вы обнаружите, что IE 6 не работает, если он не пропатчен выше 100 символов.

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

Ответы [ 11 ]

5 голосов
/ 08 октября 2008

Url - это путь + строка запроса, и в связанной статье говорится только об ограничении пути. Поэтому, если вы используете asp.net, не превышайте путь в 260 символов. Менее 260 всегда будет работать, и у asp.net нет проблем с длинными строками запросов.

http://somewhere.com/directory/filename.aspx?id=1234
                                             ^^^^^^^- querystring
                    ^^^^^^^^^^^^^^^^^^^^^^^^ -------- path

Обычно проблема связана с браузером. Давным-давно я проводил тесты и вспоминал, что многие браузеры поддерживают URL-адреса 4k, за исключением IE, который ограничивает его до 2083, поэтому для всех практических целей ограничьте его до 2083. Я не знаю, есть ли ограничение в IE7 и 8, но если вы Для достижения широкой совместимости вам нужно использовать наименьший общий знаменатель.

3 голосов
/ 07 октября 2008

Предел по умолчанию в IIS составляет 16 384 символа

Но IE не поддерживает более 2083

Больше информации на ссылка

3 голосов
/ 07 октября 2008

W3C не устанавливает ограничения по длине, но посмотрите здесь практические ограничения

http://www.boutell.com/newfaq/misc/urllength.html

выберите свой собственный лимит из этого.

2 голосов
/ 07 октября 2008

Short; -)

Проблема в том, что каждый веб-сервер и каждый браузер имеют собственные представления о том, как долго длится максимум. RFC для протокола HTTP не дает максимальной длины. IE ограничивает получение до 2083 символов, сам путь может быть не более 2048 символов. Однако этот предел не является универсальным. Firefox утверждает, что поддерживает не менее 65 536, однако некоторые люди подтвердили, что на некоторых платформах работает даже 100 000 символов. Safari выше 80 000 (проверено). Сервер Apache, с другой стороны, имеет ограничение в 4000. Информационный сервер Microsoft имеет один сервер 16,384 (но он настраивается).

Я рекомендую в любом случае не превышать 2000 символов. Это не гарантирует работу со всеми браузерами в мире (особенно не старыми), но оно будет работать со всеми современными браузерами. Кроме того, я рекомендую использовать POST везде, где это возможно (например, избегать использования GET для отправки FORM - если некоторые пользователи хотят имитировать отправку FORM через GET, убедитесь, что ваше приложение поддерживает требуемые параметры либо через POST, либо через GET, но при отправке страницы Вы сами через кнопку или JS, предпочитаете POST, а не GET).

2 голосов
/ 07 октября 2008

Определите «оптимальный» для вашего приложения.

Стандарт HTTP имеет ограничение (зависит от вашего приложения):

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

  Note: Servers ought to be cautious about depending on URI
  lengths above 255 bytes, because some older client or proxy
  implementations might not properly support these lengths.

Итак, вопрос в том, каков предел вашей программы или каков максимальный размер идентификатора ресурса, необходимый вашей программе для выполнения всех ее функций?

Ваша программа должна иметь естественный лимит.

Если этого не произойдет, вы можете использовать его как 16k, так как у вас недостаточно информации для определения проблемы.

-Adam

2 голосов
/ 07 октября 2008

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

1 голос
/ 07 октября 2008

Я думаю, что RFC говорит 4096 символов, но IE усекает до 2083 символов. Будьте в безопасности, чтобы быть в безопасности.

Практически, короткие URL-адреса более дружелюбны.

0 голосов
/ 08 октября 2008

Когда вы говорите «Оптимальный», я думаю, «Легко доступный для пользователей», и в этом случае, я думаю, чем короче URL, тем лучше. В этом случае я думаю, максимум 20-30 символов.

0 голосов
/ 07 октября 2008

Если вы хотите, чтобы люди запомнили URL, я бы набрал не более 60. Используйте слова, если это возможно, потому что легче запомнить «www.example.com/this-is-the-url» чем "www.example.com/179264". Если вы пытаетесь проиндексировать страницу, возможно, вы могли бы пойти дальше. Пауки также ищут слова в названии, и некоторые люди могут с большей вероятностью нажать на ссылку, если URL-адрес выглядит читабельным.

0 голосов
/ 07 октября 2008

Что такое «оптимальный» в любом случае?

GET-запросы могут иметь длину несколько кБ, так что это полностью субъективно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...