在.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中出现错误。
答案 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