Имеет ли значение регистр имени хоста HTTP (верхний/нижний)?

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

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

Я проверил адресу http и DNS RFCs, my спецификация P3P политики параметры cookie и СОП; но нигде я не видел даже упоминания о доменных именах, чувствительных к регистру.

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

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

5 ответов


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


нет, это не имеет никакого значения.

Проверьте спецификацию URL RFC (http://www.ietf.org/rfc/rfc1738.txt). Из раздела 2.1:

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


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

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

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


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

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

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


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

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

2.1. Основные части URLs

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