ASP.NET Core Web API已配置CORS仍拦截POST请求问题求助
问题原因
你当前的CORS策略仅配置了允许的跨域源,没有放行非简单请求的自定义请求头和请求方法:
- 普通GET请求属于简单请求,无需触发CORS预检,因此可以正常执行
- 携带
Content-Type: application/json的POST请求属于非简单请求,浏览器会自动发送OPTIONS预检请求校验跨域权限,你未配置允许Content-Type请求头,因此预检失败 - Postman不受浏览器同源策略限制,因此请求可以正常执行
解决方案
修改ConfigureServices方法中的CORS策略配置,添加允许的请求头与请求方法即可:
services.AddCors(options => { options.AddPolicy(name: MyAllowSpecificOrigins, builder => { builder.WithOrigins("http://localhost:8080") // 明确放行需要的请求头,生产环境不建议使用AllowAnyHeader,可缩小权限范围 .WithHeaders("Content-Type") // 明确放行需要的请求方法,按需添加GET/POST/PUT/DELETE等 .WithMethods("GET", "POST"); }); });
验证注意事项
你当前的中间件顺序UseRouting→UseCors→UseAuthorization符合ASP.NET Core的要求,无需调整。修改配置后重启后端服务即可生效。
内容的提问来源于stack exchange,提问作者m.tracey
相关产品推荐
相关产品推荐

