Имеет ли значение регистр имени хоста HTTP (верхний/нижний)?
-
06-09-2019 - |
Вопрос
Другими словами, имеет ли значение, использую ли я http://www.example.com/ или http://www.exAmPLe.COM/ ?
В последнее время я столкнулся со странными проблемами с именами хостов:У меня есть веб-сервер Apache2.2+PHP5.1.4, к которому обращаются все виды браузеров.В частности, пользователи IE6 (особенно.когда их строка UA перегружена многочисленными BHO, шаблона пока нет), похоже, возникают проблемы с доступом к сайту (cookie исчезают, JS отказывается загружаться) при входе через http://www.Example.com/, но нет http://www.example.com/
Я проверил HTTP и DNS RFC, мой Политика P3P, настройки файлов cookie и СОП;но нигде я не видел даже упоминания о том, что доменные имена чувствительны к регистру.
(Я знаю, что путь и строка запроса чувствительны к регистру ( ?x=foo
отличается от ?x=Foo
) и обращаться с ними соответствующим образом;я не анализирую/обрабатываю доменное имя в своем коде)
Я делаю что-то не так, или это просто какая-то ерунда с браузером и панелью инструментов, с которой мне следует разобраться?
Решение
Доменные имена нет с учетом регистра; 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 для URL-адресов..
2.1.Основные части URL-адресов
Названия схемы состоят из последовательности символов.Разрешенные буквы «a»-«z», цифры и символы плюс («+»), период («») и дефис («-») разрешены.Для устойчивости программы, интерпретирующие URL -адреса, должны рассматривать буквы верхнего регистра как эквивалентные для нижнего случая в именах схемы (например, разрешают «HTTP», а также «HTTP»).