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

.Net Core跨站场景下Chrome、Firefox不设置Cookie问题求助

解决方案

1. 修正本地开发的Cookie配置

你当前配置的Cookie开启了Secure=true,该属性要求Cookie只能在HTTPS协议的请求上下文中被存储和传递,而你的前端站点运行在http://localhost:3000(HTTP协议),会导致浏览器直接丢弃该Cookie。
本地开发可选择任意一种适配方案:

  • 给React开发服务器开启HTTPS启动:修改package.json中的start脚本,Windows环境改为set HTTPS=true&&react-scripts start,Mac/Linux环境改为HTTPS=true react-scripts start,启动后前端地址变为https://localhost:3000,与后端协议保持一致
  • 分环境配置Cookie选项:开发环境下设置Secure=false、SameSite=SameSiteMode.Lax,生产环境再切回Secure=true、SameSite=SameSiteMode.None

2. 检查CORS中间件调用顺序

在Startup.cs的Configure方法中,必须保证app.UseCors()的调用位置在app.UseRouting()之后,app.UseAuthentication()、app.UseAuthorization()之前,顺序错误会导致CORS配置不生效,浏览器直接拒绝处理跨站Cookie。参考正确配置:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 其他基础配置省略
    app.UseRouting();

    app.UseCors(); // 必须放在路由之后、身份认证之前

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

3. 全量请求开启凭证配置

不仅后续业务请求要设置xhr.withCredentials = true,登录请求本身也必须开启该配置,否则浏览器会直接忽略登录响应返回的Set-Cookie头。

4. 部署环境额外检查

如果部署到公网,需明确配置Cookie的Domain属性为父级域名,例如前端站点为https://www.example.com、API站点为https://api.example.com,则Cookie的Domain设置为.example.com,保证跨子域场景下Cookie可以正常读取和携带。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:09