.Net核心cookie不会被设置

Per*_*syl 8 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();
}
Run Code Online (Sandbox Code Playgroud)

但是在浏览器(Chrome)中,我无法看到它,甚至无法阅读:

var cookieValue = Request.Cookies[cookieName];
Run Code Online (Sandbox Code Playgroud)

(cookieName是一个带有cookie名称的变量集)

如果使用Chrome扩展程序"EditThisCookie",我可以手动设置它以确保Request.Cookies [cookieName]实际工作,所以错误在我的代码的附加cookie中以某种方式.

Sig*_*gge 23

从ASP.NET Core 2.1开始,模板包含您CookiePolicyOptions在Startup.cs中的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;
});
Run Code Online (Sandbox Code Playgroud)

未经用户明确许可,该CheckConsentNeeded选项true将阻止将任何非必要的cookie发送到浏览器(无Set-Cookie标头).

您可以通过在创建IsEssential属性true时将属性设置为更改此行为,或将Cookie标记为必需:

var options = new CookieOptions
{
    Expires = DateTime.Now.AddMinutes(60),
    IsEssential = true
};

Response.Cookies.Append("rudeCookie", "I don't need no user to tell me it's ok.", options);
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多内容:https://docs.microsoft.com/en-us/aspnet/core/security/gdpr?view = aspnetcore-2.1

  • .NET 再次不遵循最小意外原则 (2认同)