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

C# .NET Core API PUT请求触发CORS错误 GET请求正常问题求助

问题原因及修复方案

你的配置存在两处错误,按以下步骤修改即可:

1. CORS策略缺少HTTP方法放行配置

当前你定义的CORS规则仅允许了任意来源和任意请求头,没有明确放行PUT这类非简单请求的HTTP方法,因此预检请求校验不通过。
修改ConfigureServices方法中的CORS配置,新增允许HTTP方法的配置:

services.AddCors(options =>
{
    options.AddPolicy("Open", builder => 
        builder.AllowAnyOrigin()
               .AllowAnyHeader()
               .AllowAnyMethod()); // 新增这行,放行所有HTTP方法
});

如果不需要放行所有方法,也可以手动指定允许的方法:
builder.WithMethods("GET", "PUT", "POST", "DELETE")

2. 中间件注册顺序错误

.NET Core中间件的执行顺序和注册顺序完全一致,你当前把UseCors放在了UseAuthorization之后,会导致CORS预检请求还没到达CORS中间件,就被授权中间件拦截返回错误。
调整Configure方法中的中间件顺序,把UseCors移到UseRouting之后、UseAuthorization之前:

app.UseHttpsRedirection();

app.UseRouting();

app.UseCors("Open"); // 调整到这个位置

app.UseAuthorization();

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

修改完成后重启项目即可正常发起PUT请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:36:02