Символ подчеркивания в именах сайтов и cookie

    Столкнулся сегодня с интересной проблемой, которая нагло выжрала 1.5 часа драгоценного времени. Надеюсь поможет другим избежать той же участи. :-)

    1) Символ подчеркивания _ в имени домена/поддомена использовать нельзя, это некорректный адрес и большинство DNS-ов не дадут вам создать такую запись. Мне удалось. :-)
    2) IE будет нормально ходить по такому сайту, но не будет посылать куки. FF будет. Расследование этого факта и заняло все время. Проблема решилась регистрацией другого поддомена без _ :-)

    IE0005: By-design. Setting cookies fails when the hostname of the server contains an underscore.

    This happens because the machine name contains an underscore, technically prohibited by DNS rules (LetterDigitsHyphen) and hence blocked. This issue is mostly relevant for Intranet sites; most DNS systems will prohibit use of underscores in hostnames due to the LDH rule. See support.microsoft.com/kb/909264 for more info.
    Поделиться публикацией

    Комментарии 71

      +20
      Э-э-э, это как вам удалось? Это надо постараться, нажить себе такой гемморой :-)
        +4
        Не знал что _ нельзя :-) Просто зашел на аккаунт на dyndns.com и сделал поддомен, и все «получилось» :-)
          +7
          Наступил на те же грабли около года назад, шишка на голове до сих пор болит :)
          Искренне сочувствую автору. У меня это заняло около 4х часов.
            0
            да было дело. Мне кажется это как раз особенность такого рода, что пока не споткнешся сам, фиг запомнишь :)
          • НЛО прилетело и опубликовало эту надпись здесь
              0
              Firefox не проверяет допустимость используемых символов. Правда, я могу ошибаться. Это если судить по его поведению.
              • НЛО прилетело и опубликовало эту надпись здесь
                  0
                  Squid тоже проверяет (в зависимости от настроек компиляции)
                0
                Я разок такое сделал на виртуальном хостинге — все домены легли — типа ошибка в ДНС. То есть адмника это позволила сделать, а вот дальше начались приключения.
                +6
                хабр всё ещё юзает поддомены юзеров с _
                  +3
                  Вероятно хабралюди не сидят в IE ;-)
                    +3
                    У меня из-за этого на корпоративной проксе проблемы т.к. она не хочет принимать домены с '_'.
                      +4
                      Сейчас все поддомены для пользователей редиректятся на аналогичные поддомены с заменой "_" на "-". Можете проверить на моем нике :)
                        +2
                        Имеем:
                        — ФФ
                        — прокся
                        driver_by.habrahabr.ru/

                        Результат: 502 Proxy Error
                          0
                          У меня аналогичная проблема (на работе инет через squid). Поэтому приходится вручную заменять "_" на "-" в ссылке.

                          Можно написать в идеи для сайта чтобы ссылки на профили автоматически преобразовывались в php для выдачи страницы с уже измененной ссылкой, а не через модреврайт уже при обращении.
                            0
                            По идее, такое надо бы писать не в идеи для сайта, а в баг трекер. Вот только его нету?
                            У меня тоже из-за прокси сервера не работает, и редирект не срабатывает. А вручную поменять я бы не догадался :)
                          +1
                          Т.е. я имел ввиду именно редирект.
                          Ссылка выдается в виде: «driver_by.habrahabr.ru», который прокси не пропускает, и потом уже меняется на нужную.
                            0
                            щелкнул по линку, ошибки не встретил… как и сказал driver_by, редирект прошел…

                            FF 3.06
                              +2
                              щас получу в лоб, уже понял на что автор указал =\
                                0
                                Ничего страшного, со всеми бывает :)
                        –1
                        В свой профиль тут зашел из-под ie7 нормально, пишет что авторизован.
                          –1
                          У вас тире, а не подчеркивание. :-)
                          Тире как раз законный символ :-)
                            0
                            Где у него тире а не подчёркивание? :)
                              0
                              Хмм, похоже на хабре это пофикшено :-) Перекидывают на URL с — вместо _ :-)
                                0
                                Ага, тоже сейчас посмотрел, приходит:
                                HTTP/1.1 301 Moved Permanently

                                Location: aleksey-m.habrahabr.ru/
                              0
                              дык там стоит вероятно мод реврайт который шлет все запросы вида *.habrahabr.ru на определенный скрипт который уже разруливает, так что пишите что угодно, и будет работать (по крайней мере делал так сам)

                              А если создавать конкретное имя то тут судя по всему будут проблемы
                                0
                                Вот, IE такому mod_rewrite-у и не пошлет куки, если не сделать редирект браузера на урл с — :-)
                              0
                              У меня в ФФ под проксей вылазит ошибка DNS на таких блогах.
                                +3
                                >Вероятно хабралюди не сидят в IE ;-)
                                А если сидят — то хабронелюди?
                                  +4
                                  хабраieлюди
                                0
                                ЖЖ принимает логин с _, но в имени субдомена меняет _ на — и не жужжит :)
                                  0
                                  ЖЖ как и хабр принимает поддомен с _ и тоже редиректит на "-«ный вариант, только с кодом 302 а не 301.

                                  А вот ссылки для /> ЖЖ сразу генерит правильные.
                                    0
                                    <lj user="foo_bar"/>
                                  0
                                  хабр редиректит на домен с "-"

                                  GET / HTTP/1.1

                                  Host: driver_by.habrahabr.ru

                                  User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.5) Gecko/2008121623 Ubuntu/8.10 (intrepid) Firefox/3.0.5

                                  HTTP/1.x 301 Moved Permanently

                                  Server: nginx/0.6.31

                                  Date: Tue, 10 Feb 2009 16:03:44 GMT

                                  Content-Type: text/html; charset=utf-8

                                  Transfer-Encoding: chunked

                                  Connection: keep-alive

                                  Keep-Alive: timeout=25

                                  Location: driver-by.habrahabr.ru/
                                    0
                                    А где? В профилях "_" заменяется на "-"
                                      0
                                      В ссылках на профиль, до редиректа. В итоге моя прокся выдаёт 400 Bad Request.
                                    +5
                                    RFC 1035
                                    The labels must follow the rules for ARPANET host names.
                                    They must start with a letter, end with a letter or digit, and have as interior
                                    characters only letters, digits, and hyphen. There are also some
                                    restrictions on the length. Labels must be 63 characters or less.
                                      0
                                      тут написано, что имя должно начинаться с буквы, а как насчет чисто циферных домеров типа 77.ru?
                                        0
                                        Все ок, мой хомяк вон 14.by ;-)
                                          +1
                                          Правила для .ru доменов
                                          www.cctld.ru/ru/docs/archive_28.php#2

                                          2.1. Доменное имя должно содержать от двух до 63 символов, начинаться и заканчиваться буквой латинского алфавита или цифрой. Промежуточными символами могут быть буквы латинского алфавита, цифры или дефис. Доменное имя не может содержать дефисы одновременно в 3-й и 4-й позициях.
                                            0
                                            Так-то может, но это будет что-то похожее на xn-- (кириллические и т.д. домены)
                                        +1
                                        не знал… хорошая информация
                                        надо не забыть))))
                                          0
                                          полезно ещё бывает читать RFC прежде, чем регистрить домены.
                                            +1
                                            Читать Розенталя прежде, чем писать по-русски, тоже полезно, но не все же читают :)
                                              +1
                                              если вы про слово «регистрить», то это коллоквиальный жаргонизм :)
                                                0
                                                я пробовал как-то читать RFC — там чёрт ногу сломит.
                                                проще нагуглить какое-нибудь простенькое объяснение для чайников — оно даст 90% нужной информации за 10% потраченного времени :)
                                                правда, потом может вылезти вот такое «подчёркивание» или ещё что-нибудь :)
                                                  0
                                                  Полностью согласен, RFC читать нереально. Тем более без отличного аглийского.
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                            0
                                            IE плохо дружит с такимим адресами. То ли не может куки отсылать, то ли с защищённым соединением не работает. Не помню уже точно, что именно, но помню, что однажды на это напоролся, запомнил, что подчёркивание в адресе — зло, и больше не использую.
                                              0
                                              А еще у меня был прикол с двух буквенным сайтом (xx.yy) и куками ie.
                                                0
                                                запоминаем :-), чтоб самому потом не наступить.
                                                  0
                                                  Была аналогичная проблема, не устанавливались куки в IE, неделю копашился перепробовал всё что мог. Когда понял в чём дело, чуть от досады об стенку не бился =)))
                                                    0
                                                    обновления были отключены? ;)
                                                    0
                                                    omg. Только сегодня я убил на это полдня, весь мозг сломал. Спасибо за пост, очень кстати, иначе я бы до конца недели бился.
                                                      –3
                                                      Нефиг использовать подчеркивание.
                                                        0
                                                        спасиб учту на будущее
                                                          +1
                                                          факт в ту-же степь — поисковые машины воспринимают «_» как точку. если вы будете ссылаться на сайт www.domain_name.com, поисковик прочтет ссылку как www.domain.name, откинув .com. проверено на собственной шкуре.
                                                            0
                                                            Я однажды встретил проблему, что ИЕ не уvеет ставить корректно куки для двухбуквенных доменов, вот это была чудо засада.

                                                            support.microsoft.com/kb/310676
                                                              +1
                                                              Да, если вы смели заметить, то в LiveJournal если ник пользователя не содержит символа подчеркивания, то он выглядит как
                                                              sample.livejournal.com, если с подчеркиванием — то users.livejournal.com/_somesample_. Но при этом, если попытаться перейти по адресу _somesample_.livejournal.com, то произойдет редирект на «верный» url.
                                                                0
                                                                Как подсказывают немного ошибся: «то он выглядит как» следует читать «то url его персонального блога выглядит как»
                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                  0
                                                                  зная правила имён в доменах, такое не сделаешь :) да и куки… ясно дело
                                                                    0
                                                                    Сталкивался с такой проблемой.
                                                                    Насколько я помню, символ "_" не рекомендован к использованию в RFC. К сожалению, в номер RFC вспомнить не удается.
                                                                      0
                                                                      Он не просто не рекомендован, он запрещен :-)
                                                                        0
                                                                        Самого главного ответа найти не смог, в интернетах в том числе: а, собссно, почему?
                                                                      0
                                                                      а если на хабре будут пользователи us_er и us-er? второму пришедшему не дадут зарегаться?
                                                                        0
                                                                        А какой из этого следует вывод для автора? А вот некуй как рвзные там микрасофты лезть поперек спецухи. Зназано в спецухе «нииизя», так и нефиг пихать в имя разные непотребности ;)

                                                                        Присключения на свою жопу человек находит сам.
                                                                          0
                                                                          Убил чуть больше времени, чем 1.5 часа на эту проблему.
                                                                          надо бы RFC почитать :)
                                                                            0
                                                                            http://administrative_law.academic.ru вполне работает)

                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                            Самое читаемое