Является ли имя хоста частью HTTP (S) URL действительно без учета регистра?

16

Безопасно ли использовать http (s): //CompanyName.com/xyz в качестве URL (например, для целей брендинга) без каких-либо изменений в конфигурациях на стороне службы?

Я знаю, что DNS нечувствителен к регистру, но могут ли быть побочные эффекты? Я имею в виду, например, различные части цепи, которые не соответствуют CompanyName.com ~ companyname.com:

  • Некоторые веб-серверы могут не совпадать
  • Некоторые брандмауэры балансировки нагрузки / прокси / кэша / прикладного уровня могут не совпадать
  • Некоторые клиенты могут применять политики одного и того же происхождения неправильно
  • Некоторые клиенты могут не совпадать при проверке сертификатов
  • Хотя DNS, как правило, не учитывает регистр, могут ли IDN изменить картину?

Кто-нибудь испытывал те или иные проблемы с прописными буквами в части имени хоста URL?


[править] @ Майкл Хэмптон отметил, что, согласно стандартам HTTP, имя хоста не чувствительно к регистру, но некоторые программы несовместимы в этом отношении.

Я пытаюсь понять, насколько распространено несовместимое программное обеспечение, в частности клиенты. Я предполагаю, что все последние крупные браузеры в порядке, но что насчёт мобильных приложений? (Должен ли я лучше разделить это на отдельный вопрос SF?) [/ Edit]

Нильс Тёдтманн
источник
Например, Firefox отправляет Hostзаголовок в нижнем регистре (по крайней мере, это то, что мне показывают его инструменты разработчика), поэтому при условии, что все браузеры делают это, у вас не должно возникнуть никаких проблем, даже если какое-то оборудование на пути к серверу не любит смешанный регистр Имя хоста. curlс другой стороны, сохраняет регистр при отправке заголовка.

Ответы:

23

Да, имя хоста действительно нечувствительно к регистру, как указано в RFC 3986 § 3.2.2 , потому что имена хостов вообще не чувствительны к регистру в DNS . Этот RFC также дает рекомендации о том, как избежать упомянутых вами проблем:

Хотя хост не учитывает регистр, производители и нормализаторы должны использовать строчные буквы для зарегистрированных имен и шестнадцатеричные адреса для единообразия, в то время как только заглавные буквы используются для кодирования процентов.

Я видел , по крайней мере , один HTTP кэш ( W3 Total Cache ) , которая не нормализуют имя хоста таким образом, и в конечном итоге кэширования контента несколько раз, например , при example.com, Example.Com, EXAMPLE.COMи т.д.

Майкл Хэмптон
источник
1
По крайней мере, до тех пор, пока худшее, что случается, состоит в том, что контент кэшируется несколько раз с помощью несовместимых кешей, это кажется чем-то, с чем можно жить.
CVn