Проблема междоменных файлов cookie (ASP.NET) - PullRequest
4 голосов
/ 26 апреля 2010

У меня проблема с междоменными куки. Я прочитал много документации о совместном использовании файлов cookie между поддоменами. Основная идея всех статей состоит в том, чтобы установить свойство домена в нечто вроде ".mydomain.com". Я создал два домена на локальном сервере IIS - test1.local.boo и test2.local.boo . Они прекрасно работают и видны в браузере. У меня есть следующий код:

Сайт test1 - пишет куки:

HttpCookie myCookie = new HttpCookie("TestCookie");
myCookie.Domain = ".local.boo";
myCookie["msg"] = "Welcome from Cookie";
Response.Cookies.Add(myCookie);

Сайт test2 - читает куки:

HttpCookie cookie = Request.Cookies["TestCookie"];
if (cookie != null)
{
    Response.Write(cookie["msg"]);
}
else
{
    Response.Write("FAILED");
}

Этот код всегда показывает сообщение FAILED. Таким образом, это означает, что второй сайт не может читать cookie из того же субдомена. Где моя ошибка ??

Ответы [ 5 ]

1 голос
/ 22 октября 2010

В IIS 7

Добавьте это в свой web.config

<system.webserver>
    <httpProtocol>
        <customHeaders>
            <add name="p3p" value="CP=&quot;NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM&quot;" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

Во II6.

  • Пробег inetmgr
  • Развернуть [Сервер] > Веб-сайты
  • Щелкните правой кнопкой мыши на [Ваш сайт]
  • Свойства
  • Заголовки HTTP
  • Добавить ...
  • Пользовательское имя заголовка: p3p
  • Пользовательское значение заголовка: CP = "NOI ADM DEV PSAi COM NAV НАШ OTR STP IND DEM"
  • OK
  • OK
1 голос
/ 27 апреля 2010

Хм ... Проблема была в браузере ... Браузер Opera не отправляет куки на другой сайт в том же поддомене. Firefox и IE прекрасно работают. В любом случае, ребята, спасибо!

Некоторые примечания: если вы хотите удалить такой файл cookie из другого субдомена, вам необходимо установить для свойства домена что-то вроде: .mydomain.com - я потратил много времени, пытаясь выяснить это. Надеюсь, это кому-нибудь поможет

1 голос
/ 26 апреля 2010

Вы можете проверить, возвращаются ли заголовки cookie браузером, используя веб-отладчик, такой как fiddler .

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

0 голосов
/ 26 апреля 2010

Попробуйте установить дату истечения срока в будущем:

cookie.Expires = DateTime.Now.AddYears(5);
0 голосов
/ 26 апреля 2010

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

...