Подтвердить что ты не робот

Являются ли URI нечувствительными к регистру?

При сравнении двух URI, чтобы решить, соответствуют ли они или нет, клиент СЛЕДУЕТ использовать примерное октетное сравнение по октету для всего URI, за этими исключениями:

Я читаю выше Предложение в Http Rfc Я думаю, что Url не чувствителен к регистру, но я не хочу и что это значит

4b9b3361

Ответ 1

В действительности это зависит от веб-сервера.

IIS не чувствителен к регистру.

Apache is.

Я подозреваю, что решение относительно IIS связано с тем, что файловая система Windows не чувствительна к регистру.

IIS по-прежнему удовлетворяет этой части спецификации, потому что СЛЕДУЕТ это рекомендация, а не требование.

Ответ 2

RFC 3986:

схема и хост нечувствительны к регистру и поэтому должны быть нормализованы в нижнем регистре. Например, URI <HTTP://www.EXAMPLE.com/> эквивалентен <HTTP://www.EXAMPLE.com/>. Предполагается, что другие общие синтаксические компоненты чувствительны к регистру, если не указано иное в схеме

RFC 2616 определяет следующее правило сравнения для схемы HTTP:

При сравнении двух URI, чтобы решить, соответствуют ли они или нет, клиенту СЛЕДУЕТ использовать сопоставление всех октетов с использованием кода с октетом по октету с учетом этих исключений:

Однако RFC 7230 блокирует его, указав:

Схема и хост нечувствительны к регистру и обычно предоставляются в нижнем регистре; все остальные компоненты сравниваются с учетом регистра.

Эти правила обычно применяются к сравнениям на стороне клиента. Нет правил, специально предназначенных для сравнения на стороне сервера. Как только сервер разбивает URI на свои компоненты, он должен обрабатывать их в соответствии с теми же правилами, но я не вижу, чтобы это соблюдалось в RFC. Некоторые веб-серверы, такие как Apache, следуют правилам. IIS не поддерживает совместимость с файловой системой, не зависящей от Windows.

Ответ 3

Хост-часть URI не чувствительна к регистру:

http://stackoverflow.com
http://StackOverflow.com

Любой из приведенных выше приведет вас к этому сайту.

Остальная часть URI после части хоста может быть чувствительной к регистру. Это зависит от сервера.

Ответ 4

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

Следующие URL-адреса (размещенные на сервере Microsoft IIS) считаются эквивалентными:

Однако серверы Apache do обрабатывают URL-адреса как чувствительные к регистру, классифицируются как два разных ресурса:

Технически, Apache правильно следит за стандартами, и Microsoft идет против спецификации... О, ну, "старые привычки умирают тяжело", говорят они!

Ответ 5

Как упоминалось в ответ Реми Лебо, правила устанавливаются для клиентской стороны. На самом деле это означает, что клиентское программное обеспечение не должно пытаться производить произвольные модификации всех частей URI, за исключением специально указанных частей. Таким образом, когда браузер, например, видит относительный URL-адрес в привязке к странице, не должен преобразовывать его в нижний регистр, прежде чем проверять, уже ли он кэширован в кеше; он также не должен использовать URI с нижним регистром для отправки на сервер. Кроме того, он не должен принимать решение о том, что два URI, которые отличаются в случае, указывают только на один и тот же ресурс (возможно, ошибочно пропускают транзакцию и возвращают результат кэширования).

Это означает, что клиент не должен предполагать, как серверы обрабатывают URI. Это требует от серверов обработки некоторых частей без учета регистра: например, схемы и хоста. Но в остальном это зависит от сервера, чтобы решить, имеют ли два URI, которые отличаются в случае с одним и тем же ресурсом, или нет. Стандарт не налагает никаких ограничений на серверы в этом отношении, нет ничего "сервера" или "сервера не следует", кроме того, что прямо предписано. Если сервер решает, что его URI нечувствительны к регистру, это абсолютно нормально. Если они чувствительны к регистру, это тоже хорошо.

Ответ 6

Для файлового URI чувствительность к регистру больше зависит от базовой файловой системы, а не от веб-сервера. Apache с радостью вернет index.html для index.html для Windows (FAT, NTFS) и для Mac (HFS), но не для файловых систем, чувствительных к регистру, таких как обычно используемые в Linux (extx и т.д.).