在 Web Api 中跨子域读取 cookie

Read cookies cross sub-domain in WebApi

我有一个 .NET Core 3.1 WebAPI 应用程序,其中 UI 和 API 托管在同一根域的不同子域上,比如 https://api.domain.comhttps://ui.domain.com

UI 站点设置了一些我需要在 API 后端读取的 cookies (.domain.com),但无论我尝试什么 - cookies 都不会传入。我在我的 Startup.cs ConfigureServices:

中启用允许通配子域和凭据的 CORS 策略
services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
                builder =>
                {
                    builder.WithOrigins("https://*.domain.com")
                           .SetIsOriginAllowedToAllowWildcardSubdomains
                           .AllowAnyMethod()
                           .AllowAnyHeader()
                           .AllowCredentials();
                });
            });

并在应用配置中使用它:

app.UseCors("CorsPolicy");

我还设置了 Cookie 策略:

    app.UseCookiePolicy(
        new CookiePolicyOptions()
        {
            MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.Lax

        });

但是当从 https://ui.domain.com 调用 https://api.domain.com 时,预期的 cookie 不存在。

如果 UI 和 API 都在同一个子域上 - 它可以工作。我错过了什么?

我最终在每个 $http 请求中添加了 { withCredentials: true }。有点痛苦,但这是唯一对我有用的东西。