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

StackOverflow https://stackoverflow.com/questions/940466

  •  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»).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top