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

React前端与.NET后端跨端口开发时如何传递Cookie?

本地跨端口Cookie访问问题的解决办法

1. 调整.NET Core后端的Cookie配置

修改后端Cookie认证的属性,让它支持跨端口访问:
在Program.cs的Cookie认证配置块里,补充这些设置:

builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        options.Cookie.Domain = "localhost"; // 统一域为localhost,适配不同端口
        options.Cookie.SameSite = SameSiteMode.Lax; // 若SSO要求更宽松的跨域,可改为SameSiteMode.None
        options.Cookie.SecurePolicy = CookieSecurePolicy.Always; // 本地开发用HTTPS时必须开启
        options.Cookie.HttpOnly = false; // 仅本地开发临时设置,方便前端JS读取Cookie;生产环境务必改回true
    });

2. 配置后端CORS允许携带凭证

让后端明确允许前端端口的跨域请求并支持Cookie传递:
在Program.cs中添加CORS策略并启用:

builder.Services.AddCors(options =>
{
    options.AddPolicy("LocalDevCors", policy =>
    {
        policy.WithOrigins("https://localhost:44496") // 前端的HTTPS地址
              .AllowAnyHeader()
              .AllowAnyMethod()
              .AllowCredentials(); // 核心配置:允许携带Cookie等凭证
    });
});

// 注意把CORS中间件放在路由之前
app.UseCors("LocalDevCors");

3. 前端请求时携带凭证

在React的请求代码里,确保开启携带凭证的设置:

  • 用axios的情况:
axios.get('https://localhost:44497/api/your-endpoint', { withCredentials: true })
  • 用fetch的情况:
fetch('https://localhost:44497/api/your-endpoint', { credentials: 'include' })

4. 用React代理转发请求(可选方案)

如果不想修改Cookie和CORS配置,可以通过代理让前后端模拟同域:
在React项目的package.json里添加代理配置:

"proxy": "https://localhost:44497"

之后前端请求直接写相对路径(比如/api/your-endpoint),请求会自动转发到后端端口,此时浏览器会认为是同域,Cookie可正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:37:43