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
相关产品推荐
相关产品推荐

