IE - лучший браузер в мире
Проблема заключается в том что пользователь логинится на веб-форму и после нажатия на кнопку "Войти" попадает опять на ту же форму логина! Т.е. невозможно даже войти.
При этом такая проблема воспроизводилась только в IE, во всех версиях, во всех других браузерах работа была нормальной.
Проблема
После тщательного анализа выяснили, что если в названии хоста или домена есть символ подчеркивания, "_", например http: //your_host.com/Login.aspx - то IE не сохранит данные ваших сессий, любые другие переменные в куки. И это несмотря на то, что данных хост\домен добавлен в список доверенных, в IE настроена политика принимать куки с любого сайта (даже из списка запрещенных), отключена любая безопасность и т.д!!!
Выдержка с блога msdn:
Q5: IE won’t set a cookie when the hostname/domain contains an underscore?
A: Correct. Technically, underscore is not a DNS character, and while Windows will let you use an underscore when naming your machine, it warns you that doing so may cause problems. One such problem is that WinINET blocks attempts to set cookies on such domains.
Существует также множество других серьезных глюков в IE, поэтому рекомендую также ознакомиться со всей статьей, запись в официальном блоге Microsoft:
http://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx
Решение
Если у вас такая проблема - не используйте IE - наверно лучшее решение :).
Ну а если серьезно, варианты решений:
- Переименовать имя сервера на имя не содержащее символы подчеркивания
- Настроить DNS переадресацию, например:
- a. На каждом клиентском компьютере добавить в файл hosts запись вида: ip-адрес_серверапробел>имя_сервера (пример: 10.5.6.6 WebForm) – после этого обращаться к веб-форме можно будет с помощью адреса
http://WebForm/Login.aspx
- при этом имя домена уже не будет содержать символ подчеркивания и все будет отлично работать.
- b. Если в локальной сети используется DNS-маршрутизация, есть DNS-сервер, то необходимо сделать для web-сервера синоним, не содержащий подчеркивания. Сделать это нужно в одном месте (не на каждом клиентском компьютере), поэтому это решение правильнее. После этого нужно перезагрузить DNS и обращаться к веб-форме используя синоним. Это должен делать администратор сети.
Приятной разработки :)