Приложение Angular, работающее в службе приложений Azure, не получает файл cookie .AspNetCore.Antiforgery, отправленный приложением веб-API ядра .NET в Azure

У меня есть приложение angular 5 и приложение веб-API .net core 2.0, размещенное на лазурном сервере в качестве служб приложений. У приложений есть два URL-адреса, как показано ниже.

angularclient.azurewebsites.net
serviceapi.azurewebsites.net

Проблема, с которой я столкнулся, заключается в том, что приложение angular не получает файл cookie .AspNetCore.Antiforgery, который отправляется serviceapi. Запрос на отправку HTTP, сгенерированный приложением angular, имеет заголовок withCredentials: true. Я определил политику cors в сервисном API, как показано ниже.

      app.UseCors(builder => builder.WithOrigins("angularclient.azurewebsites.net").AllowAnyMethod().AllowAnyHeader());

Я отправил запрос через POSTMAN и проверяю, отправляются ли файлы cookie сервером. Файлы cookie для запроса POSTMAN принимаются без каких-либо проблем. Когда я размещаю приложения на своем тестовом сервере IIS и проверяю. В этой среде приложение работает нормально. Помогите найти решение этого вопроса.


person bhathiya.m    schedule 13.12.2018    source источник
comment
Вы говорите, что у вас проблема с неустановленным файлом cookie Anti-forgery, но вы показали нам код для настройки cors. Angular ожидает определенного имени заголовка, поэтому вам нужно правильно настроить основное приложение aspnet. См. здесь и здесь   -  person jpgrassi    schedule 13.12.2018
comment
Спасибо за совет. Как вы упомянули, я уже настроил свое основное приложение .net. Ниже приведены мои основные конфигурации .net services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN"); app.UseAntiforgeryTokenMiddleware("X-XSRF-TOKEN"); В конфигурации промежуточного программного обеспечения приложения, как показано ниже context.Response.Cookies.Append(requestTokenCookieName, tokens.RequestToken, new CookieOptions() { HttpOnly = false });   -  person bhathiya.m    schedule 14.12.2018
comment
Можете ли вы опубликовать здесь все свои ConfigureServices и Configure методы? Если он слишком длинный, скройте не связанные части. Настройка CORS должна произойти до вызова AddMvc.   -  person jpgrassi    schedule 14.12.2018
comment
А также: context.Response.Cookies.Append.. используйте это для имени файла cookie XSRF-TOKEN. Это имя файла cookie по умолчанию, которое будет искать angular, а не X-XSRF-TOKEN, когда вы проходите.   -  person jpgrassi    schedule 14.12.2018


Ответы (1)


На поиск причины возникновения этой проблемы в службах приложений Azure уходит неделя. Причина в том, что Microsoft запретила файлы cookie в верхнем домене azurewebsites.net, включив их в общедоступный список суффиксов. Более подробную информацию можно найти здесь

person bhathiya.m    schedule 14.12.2018