Варианты сохранения состояния - PullRequest
1 голос
/ 05 марта 2012

У меня есть страница, на которой мне нужно проверить наличие куки, а затем выполнить перенаправление.

У меня есть написанный код (ASP.NET), чтобы обнаружить cookie и выполнить перенаправление. Псевдо-код:

HttpCookie myCookie = Request.Cookies.Get("theCookie");
if(myCookie == null)
{
 myCookie = new HttpCookie("theCookie","myValue")
 response.Redirect("page.aspx"); //Redirect to check for the presence of the cookie
}

More code...

Когда у пользователя включены файлы cookie, этот подход работает нормально. Однако, когда у них отключены файлы cookie, они в конечном итоге застревают в бесконечном цикле (страница пытается создать cookie, перенаправляет, не видит cookie, а затем перенаправляет снова, до бесконечности). С большинством пользователей, вероятно, все будет в порядке, но это, вероятно, повлияет на SEO-рейтинги сайта.

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

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

Может ли кто-нибудь придумать, как этого добиться (предотвратить перенаправление) без использования файлов cookie, состояния просмотра или строк запросов? Я думаю, что ответ, вероятно, нет ...

Ответы [ 3 ]

3 голосов
/ 05 марта 2012

Использование строки запроса описанным вами способом является правильным решением.

0 голосов
/ 06 марта 2012

То, что я делал (в случае, если это попробует кто-то другой), использовало несколько трюков:

  • Настройка элемента управления скрытого поля ASP.NET с его значением, установленным в false (по умолчанию - cookie отключены)
  • Использовал клиентский скрипт для проверки, включены ли куки
  • Если файл cookie установлен, файлы cookie включены. В этом случае я использую вызов jQuery, чтобы изменить значение скрытого поля с false на true
  • На стороне сервера, если значение скрытого поля равно true, страница выполняет перенаправление. В противном случае он просто продолжает обрабатывать страницу.

Если у пользователя отключен Javascript, значение скрытого поля остается ложным, поэтому страница по-прежнему отображается только один раз.

Спасибо, что дали мне поговорить и заставили меня задуматься!

0 голосов
/ 05 марта 2012

РЕДАКТИРОВАТЬ : выглядит как плохая идея - подход - строка запроса.Для справки: локальное хранилище, а также сценарий можно отключить, поэтому это необходимо учитывать при разработке любой логики обнаружения на стороне клиента.


Вы также можете попробовать использовать локальное хранилище в браузере, чтобы предотвратить бесконечностьперенаправляет.Это позволит вам сохранить чистоту URL-адреса от строки запроса «? IsCookie = true».Обратите внимание, что для этого вам нужно включить JavaScript.Если вы беспокоитесь о cookie-файлах, вам следует беспокоиться и об отключенном JavaScript.

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