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

.NET Core 6 Web API配置任意源CORS失败问题求助

.NET Core 6 CORS允许任意源报错的原因及解决办法

核心原因

浏览器的CORS安全规范明确规定:当请求包含凭证(如Cookie、HTTP认证信息)时,服务器不能将Access-Control-Allow-Origin设置为通配符*。

你配置的AllowAnyOrigin()本质就是返回*,再加上AllowCredentials(),完全违反了这个规范,所以浏览器会直接拦截响应,导致你看到的"没有Access-Control-Allow-Origin头"的错误(实际是浏览器因为规范冲突直接屏蔽了响应)。而用WithOrigins("http://localhost")时,服务器返回的是具体的源地址,符合带凭证的要求,所以能正常运行。

解决方案

根据你的需求分两种情况处理:

情况1:不需要携带凭证(Cookie/认证信息)

直接移除AllowCredentials(),保留AllowAnyOrigin()即可:

builder.Services.AddCors(options =>
{
    options.AddPolicy(name: "any",
        policy =>
        {
            policy
            .AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader();
        });
});

情况2:必须携带凭证

不能再用AllowAnyOrigin(),改用SetIsOriginAllowed(_ => true),它会动态将请求的Origin作为Access-Control-Allow-Origin的值返回(而非*),同时配合AllowCredentials()就符合规范了:

builder.Services.AddCors(options =>
{
    options.AddPolicy(name: "any",
        policy =>
        {
            policy
            .SetIsOriginAllowed(_ => true)
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials();
        });
});

额外注意

确保app.UseCors()的中间件顺序正确:要放在app.UseRouting()之后,app.UseAuthorization()之前,否则CORS策略可能不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:50:25