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


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

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

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

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

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

Author: Community, 2009-06-02

5 answers

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

 24
Author: grawity, 2016-01-03 11:56:45

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

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

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

 5
Author: Alex Beardsley, 2009-06-02 17:08:51

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

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

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

 4
Author: benc, 2009-07-17 07:35:04

В соответствии с http://tools.ietf.org/html/rfc1035:

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

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

 1
Author: Gili, 2009-06-02 16:28:38

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

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

2.1. Основные части URL-адресов

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

 0
Author: cgp, 2009-06-02 16:25:07