Мой метод веб-API для инициализации сеанса успешно возвращает cookie.Внешний интерфейс в угловом формате, поэтому я вызываю cookie XSRF-TOKEN, потому что angular говорит, что примет это и превратит в заголовок X-XSRF-TOKEN во всех последующих запросах.
Для справки в ИнтернетеМетод контроллера API GET, который создает cookie, выглядит следующим образом:
...
HttpResponseMessage resp = new HttpResponseMessage() {
Content = new JsonContent(results)
};
if (results.Token != null) {
var cookie = new CookieHeaderValue("XSRF-TOKEN", results.Token);
cookie.Expires = DateTimeOffset.Now.AddDays(365);
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
cookie.HttpOnly = false;
resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
}
return resp;
...
Используя Fiddler, я вижу cookie в ответе.Теперь я ожидаю 2 вещи
- все последующие вызовы API для того же домена должны включать этот файл cookie в заголовок запроса
- Angular должен добавить заголовок X-XSRF-TOKEN Iупоминалось ранее
Ничего не происходит (я проверяю с Fiddler).Я пробовал использовать сайт и API в одном домене (например, localhost) и в разных доменах.
Некоторые источники, которые я проверял:
Я также попытался добавить
$httpProvider.xsrfWhitelistedOrigins = [webServicesPath];
, где webServicesPath - это переменная, которую я использую для пути API, но это не имеет значения.