Установка куки в ASP.Net, но jQuery, похоже, игнорирует его - PullRequest
0 голосов
/ 22 октября 2011

У меня есть приложение ASP.NET, которое использует jQuery и домашнюю панель вкладок (длинный рассказ), чтобы сохранить текущую вкладку между постбэками. Я использую надстройку Cookie. Работает очень красиво и надежно.

Мы добавили функцию, при которой нажатие на ссылку на одной вкладке («A») заставляло сервер делать некоторые вещи, которые изменяли отображение на другой вкладке («B»). Таким образом, пользователи хотели, чтобы вкладка B была текущей, когда страница вернулась. Казалось, что проще всего было сделать так, чтобы ASP.Net установил для cookie текущей вкладки значение для вкладки B. Я сделал это с помощью следующего кода:

Response.SetCookie(New HttpCookie("current-tab", HttpUtility.UrlEncode("#Tabs-Planning")))

Это прекрасно работает на моей машине, но на тестовом сервере - нет. А вот странные биты (контекст - это тестовый сервер, если не указано иное):

  • jQuery продолжает загружать и надежно устанавливать cookie; он просто действует так, как будто cookie-файл, установленный сервером, никогда не был. Если вы нажмете кнопку на вкладке A, файл cookie, полученный при перезагрузке, отобразит вкладку A в качестве текущей вкладки, даже если сервер установил для cookie вкладку B.

  • Я знаю, что он сделал это или сделал что-то , потому что Инструменты разработчика IE показывают cookie как содержащее значение для вкладки B.

  • Независимо от того, на какой вкладке вы щелкнете, в Инструментах разработчика будет отображаться файл cookie, содержащий значение для вкладки B. (Я щелкаю пункт меню, чтобы просматривать файлы cookie несколько раз, не обновляя страницу отображения файлов cookie, поэтому я должны всегда получать текущие куки.) Однако, если вы были на вкладке A, когда вы отправили назад, отладка Javascript покажет, что полученное значение - вкладка A.

  • Независимо от того, каким методом установлен файл cookie, на странице отображения файлов cookie файл cookie имеет домен «.com». Очевидно, что это не фактический домен.

  • Я не вижу никакой разницы между файлами cookie, установленными на моей машине, и файлами cookie, установленными тестовым сервером, за исключением домена.

  • Я не вижу разницы между файлами cookie, установленными сервером, и файлами cookie, установленными jQuery.

Я перепробовал все, что мог придумать. Существуют ли настройки сервера или кэширование, которые могут объяснить это? У меня никогда не было повода для установки файлов cookie в ASP.Net: возможно, есть что-то, что мне нужно установить, о котором я не знаю?

ETA: с тех пор я обнаружил это поведение , а также то, что часть проблемы заключалась в том, что на тестовом сервере приложение находилось в каталоге от корня, поэтому серверу нужно было установить путь (он автоматически устанавливается на клиенте.)

Это решило проблему в Chrome, но у меня все та же проблема в IE. Мне было поручено сосредоточиться на других вещах и вернуться к этому позже на этой неделе.

1 Ответ

0 голосов
/ 24 октября 2011

Попробуйте добавить в файл cookie значения expires и path, и посмотрите, поможет ли это.

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