为什么在使用Response.Cookies.Append时添加匿名,为什么我的Cookie没有添加到Chrome或Firefox中?

时间:2019-10-22 20:13:34

标签: .net-core .net-core-2.2

在我的Web API中,.NET Core 2.2和Cookies令人迷惑。

当我使用Response.Cookies.Append(-Cookie-)附加Cookie时,就会发生此问题。当我通过匿名身份验证或使用JWT承载令牌进行身份验证时,其行为会有所不同。

  • 通过身份验证后,它将创建我的cookie,没有任何问题。
  • 匿名时,它将在响应中附加cookie,我可以在Fiddler中看到它,但是我的浏览器(Chrome或Firefox)拒绝添加cookie。

我正在本地运行两个应用程序:

  • Angular应用(localhost:4200)
  • Web API(localhost:7000)
// Controller code
this.Response.Cookies.Append(
    COOKIE_NAME,
    base64StringVariable,
    new CookieOptions
    {
        Expires = DateTime.Now.AddYears(1),
        IsEssential = true
    });

// Startup.cs -> ConfigureServices
services.Configure<CookiePolicyOptions>(options =>
    {
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });
​
services.AddCors(
    options =>
    {
        options.AddPolicy(
            CORS_POLICY_NAME,
            builder =>
                {
                    builder.WithOrigins(serverSettings.WebsiteUri); // http://localhost:4200
                    builder.AllowAnyMethod();
                    builder.AllowAnyHeader();
                    builder.AllowCredentials();
                });
    });
​
// Startup.cs -> Configure
app.UseCors(CORS_POLICY_NAME);
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseResponseCaching();
app.UseMvc();

任何帮助将不胜感激!

0 个答案:

没有答案