Cookie не отправляется с запросом Ajax

Обнаружена проблема. Файлы cookie проверки подлинности с помощью форм не распределяются между запросами к службе.

Файл cookie «.ASPXAUTH» успешно создан и отправлен в браузер из службы входа в систему, но не отправляет файл cookie для последующих запросов к той же службе.

Обнаружено при вызове службы из облачного приложения запрос с использованием HTTP 1.1, а для ответа - HTTP 1.0.

Дополнительные наблюдения с пользователем Fiddler и других инструментов:

Работает нормально при следующих обстоятельствах:

  1. Запуск службы и клиентского веб-сайта из локальной системы разработки
  2. Служба хостинга и клиент в одном IIS (локальный и удаленный)
  3. Доступ на основе URL-адресов, файлы cookie передаются правильно

Не работает при следующих обстоятельствах:

  1. Служба хостинга и клиент на разных серверах IIS.
  2. Служба хостинга в IIS (или Azure) и клиент из локальной системы разработки

Еще немного подробностей: оба запроса сделаны для одной и той же службы, т.е. одного и того же домена, одного и того же протокола, одного и того же номера порта и т. д.

Обновления от 20 декабря 2012 г., 15:14:

  1. Как я уже говорил ранее, функция входа в систему работает с вызовом Ajax в обязательном порядке, Fiddler показывает Set-Cookie при ответе, но браузер не читает файл cookie.

  2. Пытался прочитать document.cookies в событии "complete:" $.Ajax(), но не смог прочитать файл cookie. означает, что браузер не получает или не удерживает файл cookie (где Fiddler показывает то же самое)

С уважением, Рамакришна.


person user1893891    schedule 11.12.2012    source источник
comment
Вы проверили, что ваш файл cookie относится к тому же протоколу, домену, порту и пути   -  person Adam Straughan    schedule 11.12.2012
comment
Сколько экземпляров вы используете?   -  person Ashwin Singh    schedule 11.12.2012
comment
Время сервера (под управлением IIS) установлено на текущее время? Какая дата и время ожидания для файла cookie при использовании Azure или IIS?   -  person Tobias Nilsson    schedule 16.01.2013
comment
Кроме того, вы пытались добавить xhrFields:{withCredentials: true} в код $.ajax? См. api.jquery.com/jQuery.ajax.   -  person Tobias Nilsson    schedule 16.01.2013


Ответы (1)


Используя проверку подлинности с помощью форм, выполняли ли вы какие-либо действия, чтобы вывести сеанс ASP.NET из процесса и из сервера?

Вы не можете разделить сеанс между серверами, поэтому вам нужно либо использовать поставщик состояния сеанса SQL и поместить сеанс в SQL Azure, либо использовать кэш Windows Azure и предоставленный поставщик состояния сеанса для хранения сеанса в кеше.

Я уверен, что вы умеете пользоваться поисковыми системами в Интернете, но вот список хороших статей, с которых можно начать (вынося сеанс из процесса):

person astaykov    schedule 11.12.2012
comment
Спасибо astaykov за ответ. Как я уже упоминал, я не разделяю сеанс между сервером в одном и том же облачном приложении на одном сервере. - person user1893891; 12.12.2012