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

.NET 6 CORS跨域报错求助:凭证模式为include时不可用通配符*

问题原因与解决方案

错误核心原因

你遇到的CORS错误明确指出:当请求的凭证模式为include时,响应头Access-Control-Allow-Origin不能使用通配符*。你的当前配置中policy.AllowAnyOrigin()会将该头设置为*,这与带凭证的请求直接冲突。

修正步骤

1. 修改CORS策略配置

将原来的AllowAnyOrigin()替换为指定具体允许的源,并添加AllowCredentials()以支持带凭证的请求:

builder.Services.AddCors(options =>
{
    options.AddPolicy(name: "CORSPolicy",
        policy =>
        {
            // 替换为你的实际客户端域名,本地开发地址和Heroku部署地址都需添加
            policy.WithOrigins("http://localhost:5173", "https://your-heroku-app.herokuapp.com")
                  .AllowAnyMethod()
                  .AllowAnyHeader()
                  .AllowCredentials();
        });
});

2. 确认中间件顺序(当前已正确)

确保UseCors位于UseRouting之后、UseAuthentication之前,你的代码中这部分顺序符合要求:

app.UseRouting();
app.UseCors("CORSPolicy");
app.UseAuthentication();
app.UseAuthorization();

3. 客户端验证(可选)

确认客户端请求已开启凭证模式:

  • 对于fetch:
    fetch('API_URL', {
      credentials: 'include'
    });
    
  • 对于Axios:
    axios.defaults.withCredentials = true;
    

关键说明

当请求包含凭证(如JWT令牌、Cookie)时,浏览器会强制要求服务器:

  • Access-Control-Allow-Origin必须是具体的域名,不能使用通配符*
  • 响应头必须包含Access-Control-Allow-Credentials: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:06:24