Можно ли установить cookie во время перенаправления в ASP.NET? - PullRequest
5 голосов
/ 20 марта 2011

Я использую ASP.NET. Я либо добавляю, либо устанавливаю куки-файл (в зависимости от того, содержит ли HttpRequest куки-файл с указанным ключом), и сразу после этого звоню Response.Redirect. Файл cookie не установлен. Это правильное поведение? Есть ли что-то взаимоисключающее в настройке cookie во время ответа http с кодом состояния 302?

Вот источник:

        if (context.HttpContext.Request.Browser.Cookies)
        {
            var cookies = context.HttpContext.Request.Cookies;
            var stateCookie = new HttpCookie(SR.session, clientState.SessionId.ToString());
            if (cookies.AllKeys.Contains(SR.session))
            {
                context.HttpContext.Response.Cookies.Set(stateCookie);
            }
            else
            {
                context.HttpContext.Response.Cookies.Add(stateCookie);
            }
        }

Вот заголовки ответа

  • X-AspNetMvc-версия - 2.0
  • Соединение - Закрыть
  • Cache-Control - частный
  • Тип содержимого - текст / html
  • Дата - вс, 20 марта 2011 г. 03:48:04 GMT
  • Местоположение - http://localhost:3599/Home/Redirected
  • Сервер - Сервер разработки ASP.NET / 9.0.0.0
  • X-AspNet-версия - 2.0.50727

1 Ответ

6 голосов
/ 20 марта 2011

После небольшого приближения кажется, что да, могут быть проблемы с установкой cookie в ответе на перенаправление, так как он может быть проигнорирован несколькими браузерами.(Это может иметь некоторый смысл, так как в ответе клиент действительно игнорирует ресурс и получает какой-то другой ресурс).

Это уже обсуждалось здесь: Отправка файлов cookie браузера во время перенаправления 302

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

...