Мои приложения состоят из 2 частей:
- Веб-API, написанный на .NET Core
- Веб-приложение, написанное на React и отображаемое с использованием сервера nodejs express
Я размещаю эти части на Azure, каждая на своем поддомене, поэтому мы имеем:
- api.azurewebsites.net
- app.azurewebsites.net
Когда пользователь входит в систему, я устанавливаю cookie-файл, насколько я понимаю, cookie-файл можно использовать в разных поддоменах.Файл cookie устанавливается следующим образом:
Response.Cookies.Append("token", "token value", new CookieOptions
{
Expires = DateTimeOffset.Now.AddDays(7),
SameSite = SameSiteMode.None,
Domain = "azurewebsites.net"
});
Но файл cookie не отправляется вместе с запросами ни в один из поддоменов.Как это может быть?
Если это неправильный подход, как мне пройти аутентификацию с помощью приложения SSR и API остальных?Когда приложение отображается в узле, оно извлекает данные точно так же, как в браузере, используя isomorphic-fetch, cookie передается вместе с ним.
Все это работает безупречно на localhost, проблема начинается, когда приложениев другом поддомене от API.
ОБНОВЛЕНИЕ:
Заголовок cookie выглядит следующим образом:
Set-Cookie: token=<token>; expires=Sat, 22 Jun 2019 05:35:18 GMT; domain=azurewebsites.net; path=/; secure
В Firefox это работаетотличается от хрома.В Chrome я выполняю запрос API аутентификации, получаю токен, получающий заголовок cookie, и затем cookie не отправляется вместе с любыми последующими запросами.
В Firefox cookie действительно отправляется с последующими запросами, однако после обновлениястраница cookie исчезла.