Имеет ли значение регистр имени хоста HTTP (верхний / нижний)? - PullRequest
11 голосов
/ 02 июня 2009

Другими словами, имеет ли значение, использую ли я http://www.example.com/ или http://wwW.exAmPLe.COm/?

В последнее время у меня возникали странные проблемы с именами хостов: у меня есть веб-сервер Apache2.2 + PHP5.1.4, доступ к которому имеют все виды браузеров. В частности, пользователи IE6 (особенно когда их строка UA обременена многочисленными BHO, пока нет шаблона), похоже, испытывают проблемы с доступом к сайту (куки исчезают, JS отказывается загружаться) при входе через http://www.Example.com/,, но не http://www.example.com/

Я проверил HTTP и DNS RFC, мои политики P3P , настройки файлов cookie и SOP ; но нигде я не видел даже упоминания о том, что доменные имена чувствительны к регистру.

(я знаю, что путь и строка запроса чувствительны к регистру (?x=foo отличается от ?x=Foo) и обрабатывают их надлежащим образом; в моем коде нет анализа / обработки доменного имени)

Я что-то не так делаю или это просто браузер + дерьмо на панели инструментов, которое мне нужно обойти?

Ответы [ 5 ]

24 голосов
/ 02 июня 2009

доменные имена не с учетом регистра; Example.com будет преобразован в тот же IP-адрес, что и eXaMpLe.CoM. Если веб-сервер или браузер обрабатывают заголовок Host с учетом регистра, это ошибка.

5 голосов
/ 02 июня 2009

Нет, это не должно иметь никакого значения.

Проверьте URL RFC Spec (http://www.ietf.org/rfc/rfc1738.txt). Из раздела 2.1:

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

4 голосов
/ 17 июля 2009

Поскольку вы сформулировали свой вопрос как практический вопрос, а затем описали реальную проблему, ответ на самом деле: ДА.

Другие ответы верны относительно того, что спецификация RFC говорит об именах хостов. Технически они должны быть нечувствительны к регистру. (Фактически, более старое соглашение заключалось в том, что домен верхнего уровня (TLD) должен был быть во всех заглавных буквах ... как "apple.COM").

Однако в реальном мире зрелые программы, такие как средства распознавания ОС и основные браузеры, получают это право. Любой вторичный код может справиться с этой ошибкой и запутать вас.

1 голос
/ 02 июня 2009

Согласно http://tools.ietf.org/html/rfc1035:

Для всех частей DNS, которые являются частью официального протокола, все сравнения между символьными строками (например, метками, доменными именами и т. д.) выполняются без учета регистра. В настоящее время это правило сила по всей доменной системе без исключения.

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

0 голосов
/ 02 июня 2009

Нет, регистр чувствительности отсутствует в отношении спецификатора протокола.

Вы можете увидеть это в RFC для URL .

2,1. Основные части URL

Имена схем состоят из последовательности персонажи. Строчные буквы "a" - "z", цифры и символы плюс ("+"), точка (".") и дефис ("-") разрешены. Для устойчивости, программы, интерпретирующие URL, должны обрабатывать заглавные буквы как эквивалентные в нижнем регистре в именах схем (например, разрешить "HTTP", а также "http").

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