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

ASP.NET Core Web API CORS异常:源不匹配与多值错误排查

ASP.NET Core Web API CORS 错误排查与解决

问题情况

我在Windows服务器部署了ASP.NET Core Web API,服务器IP已绑定到https://api.example.com,直接访问https://api.example.com/api/test能正常返回数据,但配置CORS后遇到了问题。

当前使用的CORS代码

builder.Services.AddCors(options => options.AddDefaultPolicy(
    policy => policy
    .WithOrigins("https://www.example.com.tr")
    .AllowAnyHeader()
    .AllowAnyMethod()

));
app.UseCors();

触发的错误提示

从源 https://example.com 访问 https://api.example.com/api/test 被CORS策略阻止:预检请求的响应未通过访问控制检查:Access-Control-Allow-Origin 头的值为 http://www.example.com,与提供的源不匹配。

后来我把CORS源改成https://example.com.tr,又出现了多值错误,错误提示和上面一致。另外,我还在Web API的web.config中添加了这段配置:

<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="*" />
<add name="Access-Control-Allow-Methods" value="*" />
</customHeaders>
</httpProtocol>

解决步骤

  1. 移除重复配置:web.config里的自定义CORS头和代码层面的CORS配置存在冲突,会导致响应头出现重复字段,引发多值错误。直接删掉web.config中<httpProtocol>下的CORS相关配置,仅保留代码里的CORS设置即可。
  2. 匹配真实请求源:错误信息明确显示前端实际发起请求的源是https://example.com,但你之前配置的是.com.tr后缀的域名,完全不匹配。先确认前端的真实请求域名,若确实是https://example.com,修改代码中的源配置:
builder.Services.AddCors(options => options.AddDefaultPolicy(
    policy => policy
    .WithOrigins("https://example.com") // 替换为实际请求的源
    .AllowAnyHeader()
    .AllowAnyMethod()
));
app.UseCors();

注意:WithOrigins中的源必须和前端完全一致,包括协议(https/http)、域名、端口(若有),不能有任何差异。
3. 排查协议一致性:错误里提到返回的Access-Control-Allow-Origin是http://www.example.com(http协议),但你的API和前端都是https,检查服务器或反向代理是否存在将https转为http的配置,导致CORS头协议错误。
4. 确认中间件顺序:app.UseCors()必须放在app.UseRouting()之后、app.UseAuthorization()之前,中间件顺序错误会导致CORS规则不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:05:16