You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core中为Cookie添加前缀?

ASP.NET Core Cookie添加安全前缀解决方案

操作步骤

1. 给认证Cookie加前缀

修改ConfigureServices中AddCookie的配置代码,指定带安全前缀的Cookie名称:

.AddCookie(options =>
{
    // 安全前缀可选__Secure-或__Host-
    // __Host-前缀要求更高:必须HTTPS传输、Path为/、不指定Domain
    options.Cookie.Name = "__Host-.AspNetCore.Cookies";
    options.Cookie.Path = "/";
    options.Cookie.Domain = null;
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
});

2. 给会话Session Cookie加前缀

修改AddSession的配置代码:

services.AddSession(options =>
{
    options.Cookie.Name = "__Host-.AspNetCore.Session";
    options.Cookie.Path = "/";
    options.Cookie.Domain = null;
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
    options.Cookie.HttpOnly = true;
    options.IdleTimeout = TimeSpan.FromMinutes(20); // 可根据需求调整会话超时时间
});

3. 全局统一添加前缀(可选,覆盖所有自定义Cookie)

在CookiePolicyOptions中新增OnAppendCookie事件逻辑,自动给所有未加前缀的Cookie补前缀:

services.Configure<CookiePolicyOptions>(options =>
{
    options.CheckConsentNeeded = context => false;
    options.MinimumSameSitePolicy = SameSiteMode.None;
    options.Secure = CookieSecurePolicy.Always;
    // 新增统一前缀逻辑
    options.OnAppendCookie = ctx =>
    {
        if (!ctx.CookieName.StartsWith("__Secure-") && !ctx.CookieName.StartsWith("__Host-"))
        {
            ctx.CookieName = "__Host-" + ctx.CookieName;
        }
    };
});

注意事项

  • 若使用__Host-前缀,必须确保站点全程HTTPS访问,否则浏览器会拒收Cookie
  • 若站点需要跨子域名共享Cookie,改用__Secure-前缀即可,不要使用__Host-前缀
  • 修改完成后清理浏览器原有Cookie再进行扫描验证,避免旧Cookie影响测试结果

内容的提问来源于stack exchange,提问作者Kartik Juneja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:36:03