ASP.NET Core 7 Web API中OPTIONS请求返回405错误求助
问题原因与解决方案
核心原因:中间件顺序错误
ASP.NET Core的中间件执行顺序直接决定请求的处理流程,当前配置中UseCors放在了UseAuthentication和UseAuthorization之后。预检OPTIONS请求不会携带任何认证凭证,会先被认证/授权中间件拦截,返回405方法不允许,根本无法走到CORS中间件的处理逻辑。修复步骤
调整中间件顺序,将UseCors移到UseAuthentication和UseAuthorization之前,同时确保在UseHttpsRedirection之后,正确的配置如下:app.UseHttpsRedirection(); // 优先处理CORS,保证预检请求能被正确响应 app.UseCors(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); app.Run();额外说明
你配置的全允许CORS策略本身没问题,但顺序错误导致规则无法作用于预检请求。POST请求能正常工作,是因为它可能属于浏览器认定的「简单请求」(比如符合特定Content-Type、无自定义头等条件),这类请求不会触发预检;而React Query的mutation可能触发了「非简单请求」,所以浏览器会自动发送OPTIONS预检请求。
内容的提问来源于stack exchange,提问作者Daniel Olsen
相关产品推荐
相关产品推荐

