J'ai créé un site Web ASP.NET Core MVC standard avec Core 2.1 dans Visual Studio à l'aide de File-> New Project.
Dans Startup.cs se trouve le code standard
public void ConfigureServices(IServiceCollection services) { 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; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
3 Réponses :
Le cookie de consentement n'est pas HttpOnly car il est défini côté client via JavaScript. Vous pouvez trouver le code dans le _CookieConsentPartial.cshtml
:
<script> (function () { var button = document.querySelector("#cookieConsent button[data-cookie-string]"); button.addEventListener("click", function (event) { document.cookie = button.dataset.cookieString; }, false); })(); </script>
Si vous avez besoin d'un cookie HttpOnly, vous devez implémenter vous-même la logique de consentement dans un middleware ou un contrôleur et utiliser un forme régulière avec une requête POST par exemple.
Je pense que c'est la meilleure réponse. Il semble que le seul moyen soit de se connecter au middleware de cookies de Microsoft et de définir HttpOnly sur leurs cookies.
Avez-vous essayé ceci?
services.ConfigureApplicationCookie(options => { // Cookie settings options.Cookie.HttpOnly = true; options.ExpireTimeSpan = TimeSpan.FromMinutes(10); });
Ce n'est pas la meilleure réponse à la question posée, mais c'est la meilleure pour résoudre le problème spécifique avec le cookie de `` consentement '', comme cela s'est produit récemment avec Chrome 80.
Lors de la configuration manuelle d'un cookie (par exemple sur un HTTPContext), il existe un objet CookieOptions simple que vous pouvez utiliser pour définir HttpOnly sur true. Cela finit par ressembler un peu à ceci:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseMvc(); app.UseCookieAuthentication(); }
Microsoft a un middleware qui utilise des cookies pour l'authentification. Si vous deviez l'utiliser dans votre application, vous l'ajoutez dans la méthode Configure de votre startup.cs.
HttpContext.Response.Cookies.Append( "CookieKey", "CookieValue", new CookieOptions { HttpOnly = true });
Si vous utilisez CookieAuthentication de cette manière, Cookies HttpOnly a > sera utilisé par défaut. Pour plus de détails, consultez ici p>
Merci, j'ai lu ce site mais je n'ai pas réussi à faire fonctionner les suggestions.