Переход на страницу без "www" в моем приложении приводит к тому, что страница не загружается - PullRequest
2 голосов
/ 20 июля 2011

Недавно мы столкнулись с проблемой, связанной с нашим приложением ASP.NET, когда пользователь, переходящий на ourcompany.com вместо www.ourcompany.com, иногда оказывается на странице, которая не загружает данные из базы данных.Кажется, проблема связана с нашим сертификатом SSL, но мне было поручено найти способ исправить это на стороне кода.

Вот конкретный пример использования:

Существуетстраница регистрации пользователя, на которую отправляются новые пользователи после «быстрой регистрации» (введите имя, адрес электронной почты, телефон).С "www" в URL (например, "www.ourcompany.com") он работает нормально, они могут работать как обычно.Однако, если они просматривали только «ourcompany.com» или имели эту закладку, когда они переходят на эту страницу, некоторые данные не загружаются (в частности, список состояний из БД) и, что еще хуже, если они пытаются отправить страницу, которую ониполностью выкинуты и отправлены обратно на домашнюю страницу.

Я пойду более подробно, если это необходимо, но мой вопрос заключается просто в том, есть ли параметр приложения, который я могу сказать, чтобы сохранить сеанс для приложения независимо от того,URL имеет "www" или нет?Покупка второго SSL-сертификата на данный момент не вариант, если нет возможности обратиться за помощью, и я должен найти способ решить эту проблему без другого SSL.

Есть идеи, чтобы указать мне правильное направление?

Ответы [ 4 ]

3 голосов
/ 20 июля 2011

Когда ваши пользователи переходят на www.ourcompany.com, они получают файл cookie сеанса для субдомена www.По умолчанию файлы cookie не распределяются между поддоменами, поэтому пользователи, заходящие на ourcompany.com, не имеют доступа к своим сеансам.

Существует полезная ветка, обсуждающая эту проблему здесь .Предлагаемое решение:

Кстати, сегодня я реализовал довольно хорошее исправление / взлом.Поместите этот код на каждую страницу: Response.Cookies ["ASP.NET_SessionId"]. Value = Session.SessionID;Response.Cookies ["ASP.NET_SessionId"]. Domain = ".mydomain.com";

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

Даг, 23 августа 2005 года

1 голос
/ 28 июля 2011

Просто обновление, я смог исправить проблему с записью web.config:

<httpCookies domain=".mycompany.com" />

После добавления проблема исчезла.

1 голос
/ 22 июля 2011

С точки зрения браузеров, www.mysite.com - это сайт, отличный от mysite.com.

Если у вас есть механизм переписывания, добавьте правило для отправки всех запросов на www, у которых его еще нет.

Или (это то, что я сделал) добавить отдельный сайт IIS с заголовком хоста «mysite.com» и установить флаг IIS для перенаправления всего трафика на www .

В любом из этих случаев всякий раз, когда браузер запрашивает страницу без префикса www, он получает ответ о перенаправлении, отправляющий ее на правильную страницу.

Вот свойства домашнего каталога перенаправления сайта:

enter image description here

и соответствующая настройка заголовка узла:

enter image description here

Это устраняет проблему, не требуя изменения кода, и случайно предотвращает дублирование результатов поиска от Google и т. Д.

1 голос
/ 22 июля 2011

Наверняка вы пытаетесь решить не ту проблему?

Можно ли просто реализовать перезапись URL-адреса и обеспечить ее согласованность?

Так, например, http://example.comперенаправляет на http://www.example.com?

Пример управления перезаписью см.

http://paulstack.co.uk/blog/post/iis-rewrite-tool-the-pain-of-a-simple-rule-change.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...