XMLHttpRequest перекрестного происхождения не обрабатывает файлы cookie ASP.NET_SessionId - что может быть в этом случае? - PullRequest
1 голос
/ 30 сентября 2011

Я борюсь с проблемой в названии уже пару дней безуспешно.У меня есть сервер ASP.NET MVC 3 REST, который требует базовой аутентификации.Я хочу написать JS API для доступа к этому серверу AJAX способом с использованием XMLHHttpRequest.

Для ответа на любой запрос http, включая запросы AJAX, сервер добавляет заголовок "Set-Cookie: ASP.NET_SessionId=<session id here>; path=/; HttpOnly" - это нормально.Но кажется, что заголовок Set-Cookie не обрабатывается браузером каким-либо образом - поэтому даже если я делаю следующий запрос с тем же объектом XMLHttpRequest, cookie не установлен должным образом, и я не могу поддерживать сеанс.Что я могу делать не так?

Мой скрипт был протестирован в Firefox 6 и Safari 5, и у меня одинаковая проблема в обоих браузерах.

Ответы [ 3 ]

1 голос
/ 05 октября 2011

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

В общем, в моемРешение Все артефакты ASP.NET передаются с сервера на клиенты в виде строки JSON, добавляемой к содержимому ответа, а с клиентов на сервер - в виде пользовательских заголовков HTTP.

Не уверен, что я не изобрел колесо, сделав это, но, по крайней мере, оно работает ...

0 голосов
/ 25 сентября 2015

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

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

Ваш субъект упоминает, что вы используете CORS.Если это так, попробуйте добавить следующий заголовок к вашему ответу:

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