.Net Core cookie将不会设置

时间:2018-09-22 11:46:34

标签: cookies asp.net-core-mvc

在.Net Core MVC项目中::我试图通过控制器操作以最简单的方式设置一个简单的cookie,但无法使其持久化并显示在浏览器中。

我的代码:

public IActionResult IndexPost()
{
    var option = new CookieOptions();
    option.Expires = DateTime.Now.AddMinutes(60);
    Response.Cookies.Append(cookieName, "SomeCookieValue", option);
    return View();
}

但是在浏览器(Chrome)中,我看不到它,甚至无法通过以下方式阅读它:

var cookieValue = Request.Cookies[cookieName];

(cookieName是使用cookie名称设置的变量)

如果使用Chrome扩展名“ EditThisCookie”,则可以手动进行设置,以确保Request.Cookies [cookieName]确实有效,因此我的代码的Append-cookie中出现错误。

1 个答案:

答案 0 :(得分:13)

从ASP.NET Core 2.1开始,模板包括Startup.cs中CookiePolicyOptions的GDPR兼容配置,即:

services.Configure<CookiePolicyOptions>(options =>
{
    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
    options.CheckConsentNeeded = context => true;
    options.MinimumSameSitePolicy = SameSiteMode.None;
});

CheckConsentNeeded的{​​{1}}选项将防止未经用户明确许可而将任何非必要的cookie发送到浏览器(无Set-Cookie标头)。

您可以更改此行为,也可以通过在创建Cookie时将true属性设置为IsEssential来将cookie标记为必不可少:

true

在此处了解更多信息:https://docs.microsoft.com/en-us/aspnet/core/security/gdpr?view=aspnetcore-2.1